使用Nokogiri和XPath获取具有多个命名空间属性的节点

时间:2014-12-07 02:51:42

标签: ruby xml xpath nokogiri

从下面开始,我想从包含xml:lang="en"属性的节点中获取文本。

<li><span class="literal"><span property="dbpedia-owl:abstract" xmlns:dbpedia-owl="http://dbpedia.org/ontology/" xml:lang="en">text</span></span></li>

目前我正在使用:

ns = {"xmlns" => "http://www.w3.org/1999/xhtml"}
ns = {"xml" => "http://www.w3.org/XML/1998/namespace"}`

array << doc.xpath("//span[@property='dbpedia-owl:abstract' and xmlns:dbpedia-owl='http://dbpedia.org/ontology/' and @xml:lang='en']").text`

我不确定这是我的XPath数组或命名空间声明是错误的,但无论哪种方式,我都没做正确的事情。

如果之前已经问过这个问题,我会道歉,但我找不到一些名称空间和多个属性的组合,所以我可能只是将我发现的解决方案与那些不同的问题组合在一起。 xmlsn:dbpedia-owl值是URL的问题也可能是一个问题,但同样不确定。

1 个答案:

答案 0 :(得分:1)

我不在我的电脑上,所以我无法测试,但我会从以下内容开始:

doc.at('span.literal').text

命名空间很有用,但根据您的示例,您应该能够轻松获取文本。