regulares online herramienta expresiones ejemplos consultas attribute xml xpath

xml - online - Obteniendo atributo usando XPath



xpath xml (7)

¿Cómo podría obtener el valor de lang (donde lang = eng en el título del libro), para el primer elemento?

Uso :

/*/book[1]/title/@lang

Esto significa :

Seleccione el atributo lang del elemento de título que es un elemento secundario del primer elemento secundario del elemento superior del documento XML.

Para obtener solo el valor de cadena de este atributo, use la string() función XPath estándar string() :

string(/*/book[1]/title/@lang)

Dada una estructura XML como tal:

<?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book> <title lang="eng">Harry Potter</title> <price>29.99</price> </book> <book> <title lang="eng">Learning XML</title> <price>39.95</price> </book> </bookstore>

¿Cómo podría obtener el valor de lang (donde lang es eng en el título del libro), para el primer elemento?


¡Gracias! Esto resolvió un problema similar que tuve con un atributo de datos dentro de una Div.

<div id="prop_sample" data-want="data I want">data I do not want</div>

Use este xpath: //*[@id="prop_sample"]/@data-want

¡Espero que esto ayude a alguien más!


Aquí está el fragmento de obtener el valor del atributo "lang" con XPath y VTD-XML.

import com.ximpleware.*; public class getAttrVal { public static void main(String s[]) throws VTDException{ VTDGen vg = new VTDGen(); if (!vg.parseFile("input.xml", false)){ return ; } VTDNav vn = vg.getNav(); AutoPilot ap = new AutoPilot(vn); ap.selectXPath("/bookstore/book/title/@lang"); System.out.println(" lang''s value is ===>"+ap.evalXPathToString()); } }


Puedes probar debajo del patrón xPath,

XPathExpression expr = xPath.compile("/bookstore/book/title[@lang=''eng'']")


Si está utilizando PostgreSQL, esta es la forma correcta de obtenerlo. Esto es solo una suposición en la que, como usted tiene una columna de TÍTULO y PRECIO de la tabla de libros con datos completados. Aquí está la consulta

SELECT xpath(''/bookstore/book/title/@lang'', xmlforest(book.title AS title, book.price AS price), ARRAY[ARRAY[]::TEXT[]]) FROM book LIMIT 1;


También puedes conseguirlo por

string(//bookstore/book[1]/title/@lang) string(//bookstore/book[2]/title/@lang)

aunque si está utilizando XMLDOM con JavaScript, puede codificar algo como

var n1 = uXmlDoc.selectSingleNode("//bookstore/book[1]/title/@lang");

y n1.text le dará el valor "eng"


puedes usar:

(//@lang)[1]

esto significa que obtienes todos los nodos de atributos con un nombre igual a "lang" y obtienes el primero.