Necesito el primer nodo de un xml complejo por un subnodo profundo con nodos aleatorios entre ellos. Mi XML:

<abc>
    <bcd id="1">
        <cde>
            <bcd id="100">
                <cde>
                    <xxx id="998">
                    </xxx>
                </cde>
            </bcd>
        </cde>
    </bcd>
    <bcd id="2">
        <cde>
            <bcd id="101">
                <cde>
                    <bcd id="102">
                        <cde>
                            <xxx id="999">
                            </xxx>
                        </cde>
                    </bcd>
                </cde>
            </bcd>
        </cde>
    </bcd>
</abc>

Con este XPATH obtengo solo con este diseño un resultado correcto. el grado de anidado es variable.

"//bcd/cde/bcd/cde/xxx[@id='998']"

Quiero un XPATH como ese donde obtengo el primer nodo bcd (id = '1'):

"//[bcd/cde]+/xxx[@id='998']"

O primer nodo bcd (id = '2'):

"//[bcd/cde]+/xxx[@id='999']"

Saludos Chris

1
masterchris_99 3 ene. 2012 a las 17:43

1 respuesta

La mejor respuesta

El siguiente xpath funciona para mí:

/*/bcd[.//xxx/@id='998']
2
rene 3 ene. 2012 a las 18:06
Como resultado, también obtengo el .
 – 
masterchris_99
3 ene. 2012 a las 17:55
Lo arregló para que solo los elementos superiores se seleccionen primero
 – 
rene
3 ene. 2012 a las 18:07