与Nokogiri的XML命名空间问题

时间:2013-04-09 00:16:31

标签: ruby nokogiri

我有以下XML:

<body>
  <hello xmlns='http://...'>
     <world>yes</world>
  </hello>
</body>

当我将其加载到Nokogiri XML文档中并致电document.at_css "world"时,我会收到nil。但是当我删除hello的命名空间时,它完美无缺。我知道我可以调用document.remove_namespaces!,但为什么它不能用于命名空间?

1 个答案:

答案 0 :(得分:1)

因为Nokogiri要求您注册要查询的XML命名空间(请阅读有关XML Namespaces的更多信息)。但是,如果在调用at_css时指定其名称空间,则仍应该能够查询该元素。要查看具体用法,请查看css method documentation。最终应该看起来像这样:

document.at_css "world", 'namespace_name' => 'namespace URI'