这是我的文件的内容(注意嵌套的引号):
<?xml version="1.0" encoding="utf-8"?>
<property name="eventData" value='{"key":"value"}'/>
在Ruby中我有:
file = File.read(settings.test_file)
@xml = Nokogiri::XML( file)
puts "@xml " + @xml.to_s
,下面是输出:
<property name="eventData" value="{"key":"value"}"/>
是否有一种方法来转换它,使输出将完全保留引号?也就是外面一个人,里面两个人?
不可以。Nokogiri::XML::Attr
(以及libxml2中的底层数据结构)中没有存储关于使用(或应该使用)哪种类型的引号来分隔属性的信息。因此,所有序列化(由libxml2完成)都使用相同的属性引用样式。
实际上,这些信息甚至没有正确地保留在XML信息集中,如规范所述:
附录D:信息集中没有的内容
当前版本的XML信息集没有表示以下信息(此列表并非详尽无遗):
[…]
17)用于引用属性值的引号类型(单引号或双引号)。
好消息是这两种XML序列化样式描述完全相同的内容。坏消息是,除非您正在使用规范XML序列化(Nokogiri 还不能生成只是最近才能够生成),否则有很多不同的方法来表示相同的文档,这看起来像是对标准文本区分工具的许多虚假的"更改"。
也许如果你能描述一下你为什么需要这个功能(你想要实现的最终目标是什么?)我们可以进一步帮助你。
你可能也对这个类似的问题感兴趣。