Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 创建具有命名空间的节点_Ruby_Nokogiri - Fatal编程技术网

Ruby 创建具有命名空间的节点

Ruby 创建具有命名空间的节点,ruby,nokogiri,Ruby,Nokogiri,我正在使用Nokogiri构建一些XML。我需要在一个名称空间中创建一个节点来声明相同的名称空间。与XML一样,这个过程被证明是非常困难的。我需要看起来像 <?xml version="1.0"?> <bar:foo xmlns:bar="http://www.bar.com"> <bar:baz>baz</bar:baz> </bar:foo> 这也不是: builder=Nokogiri::XML::Builder.new d

我正在使用Nokogiri构建一些XML。我需要在一个名称空间中创建一个节点来声明相同的名称空间。与XML一样,这个过程被证明是非常困难的。我需要看起来像

<?xml version="1.0"?>
<bar:foo xmlns:bar="http://www.bar.com">
  <bar:baz>baz</bar:baz>
</bar:foo>
这也不是:

builder=Nokogiri::XML::Builder.new do |xml|
  # undefined method `namespace_definitions' for #<Nokogiri::XML::Document:0x3fcc11b590ec name="document">
  xml['bar'].foo( "xmlns:bar" => "http://www.bar.com") do
    xml['bar'].baz "baz"
  end
end
如何让Nokogiri提供我想要的XML?

哦,我们开始:

显然,你要么在创作过程中做不到这一点,要么这太难了,以至于你无法理解。但您可以在创建后执行此操作:

builder=Nokogiri::XML::Builder.new do |xml|
  xml.foo( "xmlns:bar" => "http://www.bar.com") do
    xml['bar'].baz "baz"
  end
end
root=builder.doc.root
ns=root.namespace_definitions.first # because thankfully there's only one namespace here
root.namespace=tns

但这很烦人。

可能是重复的,是重复的,但我在发布之前没有看到。
builder=Nokogiri::XML::Builder.new do |xml|
  xml.foo( "xmlns:bar" => "http://www.bar.com") do
    xml['bar'].baz "baz"
  end
end
root=builder.doc.root
ns=root.namespace_definitions.first # because thankfully there's only one namespace here
root.namespace=tns