Estoy tratando de extraer el elemento dc:title
usando un xpath. Puedo extraer los metadatos usando el siguiente código.Consulta del espacio de nombres 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>
Como puede ver, todo lo anterior parece funcionar correctamente. Sin embargo, parece que no puedo obtener la información del título de este árbol de nodos, todos los siguientes fallan.
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
¿Podría alguien explicar cómo se deben usar los espacios de nombres en un xpath con el documento xml anterior?
Awesome funcionó perfectamente, gracias! – Jamie
+1 Sí remove_namespaces FTW! –
¡Gracias! ¡esto es magia! – Jirapong