xpathを使用してdc:title
要素を取り出すことを試みています。次のコードを使用してメタデータを取り出すことができます。Nokogiri/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>
上記のように、正しく動作するように見えます。しかし、私はこのノードツリーからタイトル情報を得ることができないようですが、以下のすべてが失敗します。
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
誰かが上記のxmlドキュメントのxpathで名前空間を使用する方法を説明してください。
恐ろしい、完璧に働いた! – Jamie
+1 remove_namespaces FTW! –
ありがとうございました!!!これは魔法です! – Jirapong