2010-11-26 22 views
6

Así que estoy tratando de analizar algunos de los WootAPI con XPath. Un problema que me estoy encontrando es que un par de elementos tienen dos puntos en su nombre, como woot:price o woot:condition. Ahora, tratando de usar el XPath //rss/channel/item/woot:price no captará el contenido del elemento woot:price, debido a los dos puntos, creo. ¿Qué puedo hacer para obtenerlo de todos modos?Utilice XPath para analizar el nombre del elemento que contiene dos puntos

Respuesta

10

Los dos puntos se deben a que los elementos tienen un prefijo de espacio de nombres y están vinculados al espacio de nombres de Woot.

Debe leer en XML namespaces and how they affect XPATH and XSLT.

Si desea hacer referencia a los elementos Woot en su XPATH que o bien necesitar:

  1. un espacio de nombre Woot http://www.woot.com/ de manera que cuando se utiliza el prefijo de espacio de nombres en su XPATH se entenderá.
  2. Utilice una declaración XPATH más genérica que use filtros de predicados que usen local-name() y namespace-uri() para hacer coincidir el elemento.
    • //rss/channel/item/*[local-name()='price' and namespace-uri()='http://www.woot.com/']
+0

1. Conocer cómo hacerlo en Java? 2. Intenté usar ese ejemplo que me proporcionó, y no funcionó. : \ – Chiggins

+0

Tuve un error en el XPATH que había proporcionado (faltaba la "h" en el espacio de nombres de woot uri y no tenía el corchete de cierre). Lo he actualizado Rever. –

+0

Ah, parece que arregló el ejemplo en 2, funciona como magia. :) – Chiggins

Cuestiones relacionadas