我正在实现一个需要命名空间的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