Pessoal, dado o trcho xml abaixo, necessito saber quantos PowerTransformer estão imediatamente abaixo de Substation:
<Substation name="nome BCH" key="se12">
<PowerTransformer name="TR da Substation" key="tr1">
</PowerTransformer>
<VoltageLevel name="138" key="NIVEL DE TENSAO NUMERO 1" >
<PowerTransformer name="TR do Voltage Level">
</PowerTransformer>
</VoltageLevel>
</Substation>
Tentei usando o seguinte código:
[code]// atribuição da Substation como elemento principal
Element tagSE = (Element) seNodeList.item(i);
// verifica se existe PowerTransformer em Substation
NodeList trList = tagSE.getElementsByTagName(“PowerTransformer”);
numTrafos = trList.getLength();
[/code]
O problema é que este código me retorna TODOS os PowerTransformer, ou seja, os que estão imediatamente abaixo da Substation e também os que estão abaixo do VoltageLevel.
Alguém sabe como posso recuperar somente o abaixo da Substation?
No seu caso é bem fácil a expressão XPath, ela seria:
"/Substation/PowerTransformer"
A expressão iria lhe voltar um conjunto de nós. Por exemplo, digamos que você tivesse o XML
<Substation name="nome BCH" key="se12">
<PowerTransformer name="TR da Substation" key="tr1">
bla
</PowerTransformer>
<PowerTransformer name="TR da Substation" key="tr2">
ble
</PowerTransformer>
<PowerTransformer name="TR da Substation" key="tr3">
bli
</PowerTransformer>
<VoltageLevel name="138" key="NIVEL DE TENSAO NUMERO 1" >
<PowerTransformer name="TR do Voltage Level">
</PowerTransformer>
<PowerTransformer name="TR do Voltage Level x">
</PowerTransformer>
<PowerTransformer name="TR do Voltage Level y">
</PowerTransformer>
</VoltageLevel>
</Substation>
A expressão “/Substation/PowerTransformer” volta 3 nós:
1:<PowerTransformer name="TR da Substation" key="tr1">
bla
</PowerTransformer>
2:<PowerTransformer name="TR da Substation" key="tr2">
ble
</PowerTransformer>
3:<PowerTransformer name="TR da Substation" key="tr3">
bli
</PowerTransformer>
(pus um número na frente de cada nó para facilitar).
Digamos agora que você só queira os PowerTransformer cuja chave fosse key1=‘tr2’. Então a expressão XPATH seria:
/Substation/PowerTransformer[@key='tr2']
e a saída seria:
1:<PowerTransformer name="TR da Substation" key="tr2">
ble
</PowerTransformer>