如何将从文档中获取的XML节点序列化为独立的节点
文献?使用node.to_xml
是不够的,因为to_xml
没有
输出所有需要的命名空间,只输出那些显式声明的命名空间
那个节点。
例如,我在doc
<wrapper xmlns="ns" xmlns:extra="extra">
<record xml:id="r1">
<field>aaa</field>
<field extra:type="second">bbb</field>
</record>
</wrapper>
我想隔离节点#r1
。
record = doc.at("//*[@xml:id='r1']")
现在,record.to_xml
返回(重新格式化)
<record xml:id="r1">
<field>aaa</field>
<field extra:type="second">bbb</field>
</record>
这种结果在某些情况下可能没问题,但对我来说并不好
用途:默认命名空间和extra
命名空间尚未
复制。我想要的是一个文档,其中包含所有需要的命名空间
已被复制,如下所示:
<record xml:id="r1" xmlns="ns" xmlns:extra="extra">
<field>aaa</field>
<field extra:type="second">bbb</field>
</record>
我怎么能用Nokogiri做到这一点?
答案 0 :(得分:0)
从Nokogiri bug report #1200出现的解决方案在使用之前是clone
节点。
使用
record.clone.to_xml
而不是
record.to_xml
生成正确的XML文档。