Leitura de XML com Xpath

Bom dia pessol, estou aqui tentando realizar a leitura de um XML com o xpath mas estou enfrentando um problema… segue a descrição :

O XML :


<Schema name="ProcessoObjetoParcelaCube" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="cube.xsd">
	<Cube name="OBJ_PARCELA_CUBE">
		<Table name="D_PROCESSO_OBJETO_PARCELA" > 
		        <SQL dialect="mssql">
			        ID_PROCESSO_OBJETO_PARCELA IN (
      			        SELECT D_PROCESSO_OBJETO_PARCELA.ID_PROCESSO_OBJETO_PARCELA FROM D_PROCESSO_OBJETO_PARCELA
			        INNER JOIN D_PROCESSO_OBJETO ON (D_PROCESSO_OBJETO_PARCELA.ID_PROCESSO_OBJETO = D_PROCESSO_OBJETO.ID_PROCESSO_OBJETO)
			        INNER JOIN M_PROCESSO ON (D_PROCESSO_OBJETO.ID_PROCESSO = M_PROCESSO.ID_PROCESSO) WHERE (1=1))
			</SQL>
		</Table> ( ... )

Estou realizando a consulta desta forma:

       xpath.evaluate("/Schema/Cube/Table", cubeDoc, XPathConstants.NODESET);

Com esta consulta ele me retorna:

ID_PROCESSO_OBJETO_PARCELA IN (
			SELECT D_PROCESSO_OBJETO_PARCELA.ID_PROCESSO_OBJETO_PARCELA FROM D_PROCESSO_OBJETO_PARCELA
			INNER JOIN D_PROCESSO_OBJETO ON (D_PROCESSO_OBJETO_PARCELA.ID_PROCESSO_OBJETO = D_PROCESSO_OBJETO.ID_PROCESSO_OBJETO)
			INNER JOIN M_PROCESSO ON (D_PROCESSO_OBJETO.ID_PROCESSO = M_PROCESSO.ID_PROCESSO) WHERE (1=1))

Sendo que eu acho que deveria retornar inclusive: … , certo ? já que a consulta é: “/Schema/Cube/Table” e não “/Schema/Cube/Table/SQL”

E eu sei que ele retorna isto, através do debugg, pois se eu uso o getNodeValue, ele não me retorna nada, sendo que está ali quando eu coloco a seta em cima do objeto no debugg …

        NodeList ndL = (NodeList) xpath.evaluate("/Schema/Cube/Table", cubeDoc, XPathConstants.NODESET);
        String v = ndL.item(0).getNodeValue();

Quall jar você está usando?

JAR ?? Se vc está perguntando se estou usando alguma API, não estou estou usando o nativo do Java “javax.xml.xpath” … e se vc qr saber a versão do java é 6 … se não era isso, não sei oq vc qr saber … uhauhauha

usando o evaluate, as tags xml não serão availadas e somente o conteúdo pelo que testei aqui, alterei o código pego do site:

http://onjava.com/onjava/2005/01/12/xpath.html#overview

e para trazer os nós seria algo como:

catalog.xml -->esta dentro de src

[code]<?xml version=“1.0” encoding=“UTF-8”?>
<catalog xmlns:journal=“http://www.w3.org/2001/XMLSchema-Instance” >
<journal:journal title=“XML” publisher=“IBM developerWorks”>
<article journal:level=“Intermediate”
date=“February-2003”>
<title>Design XML Schemas Using UML</title>
<author>Ayesha Malik</author>
</article>
</journal:journal>
<journal title=“Java Technology” publisher=“IBM
developerWorks”>
<article level=“Advanced” date=“January-2004”>
<title>Design service-oriented architecture
frameworks with J2EE technology</title>
<author>Naveen Balani </author>
</article>
<article level=“Advanced” date=“October-2003”>
<title>Advance DAO Programming</title>
<author>Sean Sullivan </author>
</article>

</journal>
</catalog>[/code]

classe de Teste

[code]import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

public class Xpath {
public static void main(String[] args) throws XPathExpressionException, FileNotFoundException, ParserConfigurationException {
File xmlDocument = new File("./src/catalog.xml");
InputSource inputSource = new InputSource(new FileInputStream(xmlDocument));
XPathFactory factory = XPathFactory.newInstance();
XPath xPath=factory.newXPath();
NodeList level = (NodeList) xPath.evaluate("/catalog/journal/article",inputSource,XPathConstants.NODESET);

	for(int i =0; i &lt; level.getLength(); i++){
		System.out.println(level.item(i).getNodeName());
		
	}
}

}

[/code]

Saída:

article article

Realizei da forma que você fez, e não importa quantas tags existirem, nos meus testes so trouxe o conteudos das tags…

Na verdade sua pesquisa esta trazendo todas as tags “Table”, como no exemplo:

bookstore/book Selects all book elements that are children of bookstore

retirado de http://www.w3schools.com/xpath/xpath_syntax.asp

Sendo assim o evaluate esta trazendo o conteudo que não é “tag” que esta dentro de Table!