Olá Pessoal!
Estou tendo o seguinte problema:
Eu tenho um arquivo. xml que faz refências a importações de Namespaces como no exemplo:
<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
<key id="ktype" for="node" attr.name="type" attr.type="string">
<default>client</default>
</key>
<key id="kwieght" for="edge" attr.name="weight" attr.type="int" />
<key id="kpriority" for="edge" attr.name="priority" attr.type="int">
<default>5</default>
</key>
<graph id="10" edgedefault="undirected">
<node id="101">
<data key="ktype">router</data>
</node>
.......
.......
.......
.......
.......
</graph>
</graphml>
Quando eu faço uma consulta utilizando XPath do Jdom da seguinte maneira:
List<?> l = graphMLManager.executeXpath("/graphml/graph/node[@id='101']/data[@key='ktype']/text()");
System.out.println(l);
Eu recebo uma lista vazia ao invés de receber o resultado correto da consulta.
Mas quando eu retiro as referencias aos Namespaces do arquivo .xml e executo o mesmo trecho de código, a consulta funciona perfeitamente. Por exemplo:
O arquivo .xml:
<?xml version="1.0" encoding="UTF-8"?>
<graphml>
<key id="ktype" for="node" attr.name="type" attr.type="string">
<default>client</default>
</key>
<key id="kwieght" for="edge" attr.name="weight" attr.type="int" />
<key id="kpriority" for="edge" attr.name="priority" attr.type="int">
<default>5</default>
</key>
<graph id="10" edgedefault="undirected">
<node id="101">
<data key="ktype">router</data>
</node>
....
....
....
....
....
</graph>
</graphml>
E executo o mesmo trecho de código:
List<?> l = graphMLManager.executeXpath("/graphml/graph/node[@id='101']/data[@key='ktype']/text()");
System.out.println(l);
E o resultado da impressão é [[Text: router]], como deveria ser.
Se for possível, como posso utilizar o XPath do Jdom sem ter que retirar as referencias aos Namespaces?
Deu pra entender a minha dúvida? rsrsrsrs Tentei explicar do melhor jeito possível…
Desde já agradeço!