Open BlueDragon y Namespaces de XML

Estoy intentando trabajar en CFML con un XML que usa Namespaces, parecido a esto:

<raiz>
<nsp:nodoA>

<nsp:nodoB>Texto 1</nsp:nodoB>

</nsp:nodoA>
<nsp:nodoA>
<nsp:nodoB>Texto 2</nsp:nodoB>
</nsp:nodoA>
</raiz>

Estoy probando Open BlueDragon para este proyecto, versión Open Source del engine BlueDragon. El primer problema que me he encontrado es no poder referenciar uno de los nodos como:

<cfset elem = miXml.raiz.nsp:nodoA[0]>

Por culpa del namespace. Así que he buscado un poco y he descubierto que la búsqueda la he de hacer con XmlSearch, que permite hacer búsquedas XPath, tal que así:

<cfset elems= XmlSearch(miXml,”//nsp:nodoA”) >

Esto devuelve un array con todos los nodos llamados “nsp:nodoA”, en este caso 2. El problema me lo he encontrado al escribir la expresión de búsqueda: al poner “//”, “/*” o “/:”, a pesar de (aparentemente) construír expresiones correctas, no había ninguna salida. Ninguna quiere decir absolutamente ninguna: ni el texto estático, ni un mensaje de error, nada absolutamente. Al final, he tenido que hacer un pequeño apaño:

<cfset elems= XmlSearch(miXml,”/” & “/nsp:nodoA”) >

Esto ha sido con Open Bluedragon 7.0.1 y Apache Tomcat 6.0.16.

Leave a Comment