2012-01-04 85 views
1

中剝離屬性命名空間我有這樣的:引入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) 

這似乎已經失去了其命名空間的標記和屬性都!有什麼辦法可以保存這些嗎?

+0

你爲什麼要處理它作爲一個片段,而不是解析整個文檔? – 2012-01-04 12:08:44

+0

因爲它是一個將被添加到文檔其他地方的片段。 – 2012-01-04 12:56:15

回答

3

引入nokogiri是盲目的,除了(1)那些在根節點上,和(2)你自己註冊任何命名空間。由於定義片段沒有根節點,因此您必須自己提供名稱空間信息。

我注意到,構造函數DocumentFragment有一個可選的上下文節點,從它可以蒐集命名空間信息。既然你已經在你的意見,你有,你將插入片段的文件指出,只要命名空間在該文件中正確註冊你也許可以使用它的上下文信息。