使用Nokogiri构建XML命名空间

时间:2012-10-24 03:28:15

标签: ruby nokogiri

我希望在Feed和条目标记中显示xmlns='http://www.w3.org/2005/Atom'。 但不知道为什么我的条目标签丢失xmlns='http://www.w3.org/2005/Atom'

这是我想要实现的结果

<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom' xmlns:batch='http://schemas.google.com/gdata/batch'> 
  <entry xmlns='http://www.w3.org/2005/Atom' xmlns:app='http://www.w3.org/2007/app' xmlns:sc='http://schemas.google.com/structuredcontent/2009' xmlns:scp='http://schemas.google.com/structuredcontent/2009/products'>

这是我的代码

builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
  xml.feed('xmlns' => 'http://www.w3.org/2005/Atom',
           'xmlns:batch' => 'http://schemas.google.com/gdata/batch') do
              xml.entry('xmlns' => 'http://www.w3.org/2005/Atom',
                        'xmlns:app' => 'http://www.w3.org/2007/app',
                        'xmlns:sc' => 'http://schemas.google.com/structuredcontent/2009',
                        'xmlns:scp' => 'http://schemas.google.com/structuredcontent/2009/products')
           end
end

1 个答案:

答案 0 :(得分:0)

在XML中,xmlns标记由子节点继承。由于entryfeed的子项,并且xmlns具有相同的值,因此Nokogiri可能会优化子节点上的条目。