这是我的文件的内容(注意嵌套引号):
<?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"}"/>
有没有办法转换它,所以输出会完全保留报价?即在外面单身,在里面加倍?
答案 0 :(得分:4)
不,它不能。 Nokogiri::XML::Attr
(libxml2中的基础数据结构)中没有关于用于分隔属性的(或应该)用于引用属性的引用类型的信息。因此,所有序列化(由libxml2完成)使用相同的属性引用样式。
实际上,这些信息甚至没有正确保留在XML信息集中,如described by the specs:
附录D:信息集中没有的内容
以下信息未在当前版本的XML信息集中表示(此列表并非详尽无遗):
[...]
17)用于引用属性值的引号(单引号或双引号)。
好消息是两种XML序列化样式描述的内容完全相同。坏消息是,除非您使用的是Canonical XML Serialization(Nokogiri最近才能生成的 not yet able to produce ),否则有多种方法可以表示同一文件这看起来像标准文本差异工具的许多虚假“变化”。
也许如果你能描述为什么你想要这个功能(你想要完成的最终目标是什么?),我们可以帮助你。
您可能也对this similar question感兴趣。