Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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 让Nokogiri将xmlns视为普通属性?_Ruby_Xml_Xml Parsing_Nokogiri - Fatal编程技术网

Ruby 让Nokogiri将xmlns视为普通属性?

Ruby 让Nokogiri将xmlns视为普通属性?,ruby,xml,xml-parsing,nokogiri,Ruby,Xml,Xml Parsing,Nokogiri,我知道如何使用Nokogiri中的名称空间,但有时,我想看看文档实际上是如何指定的 在这些情况下,如果Nokigiri可以简单地表现为对名称空间一无所知,像对待任何其他属性一样对待“xmlns”,并像对待元素一样对待它们的名称(冒号和全部,如果存在的话)和默认名称空间中的所有元素,那就太好了 有没有办法做到这一点 编辑:添加示例 假设我使用Nokogiri检查生成的SVG。我想知道名称空间是使用xmlns属性在根元素中指定的,我想知道子元素使用隐式名称间距 <svg version="1.

我知道如何使用Nokogiri中的名称空间,但有时,我想看看文档实际上是如何指定的

在这些情况下,如果Nokigiri可以简单地表现为对名称空间一无所知,像对待任何其他属性一样对待“xmlns”,并像对待元素一样对待它们的名称(冒号和全部,如果存在的话)和默认名称空间中的所有元素,那就太好了

有没有办法做到这一点

编辑:添加示例

假设我使用Nokogiri检查生成的SVG。我想知道名称空间是使用xmlns属性在根元素中指定的,我想知道子元素使用隐式名称间距

<svg version="1.1" width="300" height="200" xmlns="http://www.w3.org/2000/svg">
    <path d="M 10,10 l 5,20" />
</svg>
这表明该文件在生成具有预期名称空间的元素方面是“正确的”,但不让我知道该名称空间是如何指定的

如果我可以得到一个完全不知道名称空间的文档实例,那么

我可以使用
svg\u doc.root['xmlns']
查询“xmlns”属性值

我可以发现“svg”根元素有一个“path”元素子元素,并且两个元素都没有使用
svg\u doc.xpath('//svg/path')的名称空间限定符前缀。

中的“名称空间”部分是关于使用CSS选择器的部分:

不过别上当了。您不必使用XPath来获得名称空间的好处。CSS选择器也可以使用。CSS只是使用管道符号来表示名称空间搜索

让我们看看之前的搜索重写为使用CSS:

@doc.css('xmlns | title')#=>[“示例提要”,“原子动力机器人疯狂运行”]
在使用CSS时,如果名称空间称为“xmlns”,甚至可以省略名称空间名称。这意味着您的CSS将减少到:

@doc.css('title')#=>[“示例提要”,“原子能机器人疯狂运行”]

您需要举例说明如何搜索。Nokogiri完全支持你所描述的。
svg_doc.xpath('//ns:svg/ns:path', 'ns' => "http://www.w3.org/2000/svg")
@doc.css('xmlns|title') # => ["<title>Example Feed</title>", "<title>Atom-Powered Robots Run Amok</title>"]
@doc.css('title') # => ["<title>Example Feed</title>", "<title>Atom-Powered Robots Run Amok</title>"]