Tôi đang cố gắng lấy phần tử dc:title
bằng xpath. Tôi có thể lấy siêu dữ liệu bằng cách sử dụng mã sau đây.Truy vấn không gian tên 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>
Như bạn có thể thấy ở trên dường như hoạt động chính xác. Tuy nhiên tôi dường như không thể lấy thông tin tiêu đề từ cây nút này, tất cả những điều dưới đây đều thất bại.
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
Ai đó có thể giải thích cách sử dụng không gian tên trong đường dẫn với tài liệu xml ở trên.
Làm việc tuyệt vời một cách hoàn hảo, cảm ơn! – Jamie
+1 Yeah remove_namespaces FTW! –
Cảm ơn bạn !!! đây là phép thuật! – Jirapong