Nokogiri在解析期间剥离属性名称空间

时间:2012-01-04 12:05:49

标签: ruby xml nokogiri

我有这个:

<style:style style:name="MYBOLD" style:family="text" style:parent-style-name="Standard">
  <style:text-properties style:font-name="Arial" style:font-name-complex="Arial" fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
</style:style>

请注意属性如何具有命名空间。

当我像这样解析它时:

Nokogiri::XML.fragment(xmltext)

它似乎丢失了标签和属性的命名空间!有什么方法可以保留它们吗?

1 个答案:

答案 0 :(得分:3)

Nokogiri对名称空间视而不见,除了(1)根节点上的名称空间,以及(2)您自己注册的任何名称空间。由于定义的片段没有根节点,因此您必须自己提供命名空间信息。

我注意到DocumentFragment的构造函数有一个可选的Context节点,它可以从中收集命名空间信息。由于您在评论中指出您有一个文档,您将在其中插入片段,只要命名空间在该文档中正确注册,您就可以将其用于上下文信息。