我正在實現一個需要命名空間的XML數據格式的導出器。我正在使用Nokogiri XML Builder(版本1.4.0)來執行此操作。用Nokogiri構建器創建一個名稱空間根元素的XML文檔
但是,我不能讓Nokogiri創建一個具有名稱空間的根節點。
這工作:
Nokogiri::XML::Builder.new { |xml| xml.root('xmlns:foobar' => 'my-ns-url') }.to_xml
<?xml version="1.0"?>
<root xmlns:foobar="my-ns-url"/>
至於做這個的:
Nokogiri::XML::Builder.new do |xml|
xml.root('xmlns:foobar' => 'my-ns-url') { xml['foobar'].child }
end.to_xml
<?xml version="1.0"?>
<root xmlns:foobar="my-ns-url">
<foobar:child/>
</root>
不過,我需要像<foo:root>
這不起作用:
Nokogiri::XML::Builder.new { |xml| xml['foobar'].root('xmlns:foobar' => 'my-ns-url') }.to_xml
NoMethodError: undefined method `namespace_definitions' for #<Nokogiri::XML::Document:0x11bfef8 name="document">
命名空間必須顯然,在使用前定義,所以沒有辦法將一個添加到根節點。
我發現a question about this on the Nokogiri mailing list,但它沒有回覆。任何人都有解決方案?
就像一個魅力。謝謝! – 2009-12-07 16:39:16
你,先生,讓我非常沮喪 – yalestar 2010-02-23 23:06:55
不客氣,耶魯之星。 – akuhn 2010-02-25 00:00:35