相关疑难解决方法(0)

Nokogiri/Xpath名称空间查询

我正在尝试dc:title使用xpath 拉出元素.我可以使用以下代码提取元数据.

doc = <<END
<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://www.idpf.org/2007/opf" version="2.0">
  <metadata xmlns:dc="URI">
    <dc:title>title text</dc:title>
  </metadata>
</package>
END

doc = Nokogiri::XML(doc)

# Awesome this works!
puts '//xmlns:metadata'
puts doc.xpath('//xmlns:metadata')
# => <metadata xmlns:dc="URI"><dc:title>title text</dc:title></metadata>
Run Code Online (Sandbox Code Playgroud)

如您所见,上面似乎正常工作.但是,我似乎无法从此节点树获取标题信息,以下所有内容都失败了.

puts doc.xpath('//xmlns:metadata/title')
# => nil

puts doc.xpath('//xmlns:metadata/dc:title')
# => ERROR: `evaluate': Undefined namespace prefix

puts doc.xpath('//xmlns:dc:title')
# => ERROR: 'evaluate': Invalid expression: //xmlns:dc:title
Run Code Online (Sandbox Code Playgroud)

有人可以解释如何使用上面的xml doc在xpath中使用命名空间.

ruby xml xpath nokogiri

35
推荐指数
1
解决办法
2万
查看次数

标签 统计

nokogiri ×1

ruby ×1

xml ×1

xpath ×1