Xpath - Quero pegar elemento independente do ancestrais

3 respostas
Michel_M

Quero pegar um certo elemento, mais este elemento esta contido em certos momentos dentro de dois ou três outros elementos. E eu não achei nem uma outra solução para resolver isso.

Este exemplo acima ele vai entrar dentro do elemento export e vai dentro de mais um elemento qualquer e vai pegar e vai pegar o LtAssuntoArquivo. Mais eu quero que ele pega este elemento LtAssuntoArquivo independente da quantidade de outros elementos que ele tenha que entrar.

Desde já agradeço a todos pela ajuda!

3 Respostas

Michel_M

Consegui era só ter colocado:

Agora ele pega todos independente, da quantidade de elementos ancestrais que ele vai ter que entrar!

Ai galera eu tenho outra duvida quando ele encontrar essa condição acima ele tem que deletar o elemento LtAssuntoArquivo e todos os se filhos que então contidos dentro dele. Eu tentei usando o removeChild mais não obtive exceto.

Alguém pode dar um pequeno exemplo?

Michel_M

Resolvi…

Michel_M

O pessoal eu consegui solucionar os problemas acima, mais agora estou com outro.
Quando eu vou para escrever o meu xml que esta alterado, ele esta comento a primeira tag de todos os elementos que estão vazios vou mostrar
um exemplo:

Antes
<!--<<< ID DO ARQUIVO >>>-->
	 <ID_ARQUIVO></ID_ARQUIVO>
	<!--<<< ID DO ARQUIVO >>>-->
	
		<!--<<<<< ABA DADOS GERAIS (M_ARQUIVO) >>>>-->
		<PASTA>01</PASTA>
		<ID_ENTIDADE></ID_ENTIDADE>
		<ID_ADVOGADO></ID_ADVOGADO>
		<ID_ASSUNTO></ID_ASSUNTO>
		<DATA>30/04/2012</DATA>
		<ID_SOLICITADO_POR></ID_SOLICITADO_POR>
		<ARQUIVADO>T</ARQUIVADO>
		<NOTA>RJ</NOTA>
		<!--<<<<< ABA DADOS GERAIS (M_ARQUIVO) >>>>-->
Depois
<!--<<< ID DO ARQUIVO >>>-->
	<ID_ARQUIVO/>
	<!--<<< ID DO ARQUIVO >>>-->
	
		<!--<<<<< ABA DADOS GERAIS (M_ARQUIVO) >>>>-->
		<PASTA>01</PASTA>
		<ID_ENTIDADE/><!--Comeu a tag que abre-->
		<ID_ADVOGADO/><!--Comeu a tag que abre-->
		<ID_ASSUNTO/><!--Comeu a tag que abre-->
		<DATA>30/04/2012</DATA>
		<ID_SOLICITADO_POR/><!--Comeu a tag que abre-->
		<ARQUIVADO>T</ARQUIVADO>
		<NOTA>RJ</NOTA>
		<!--<<<<< ABA DADOS GERAIS (M_ARQUIVO) >>>>-->
Metodo
public static void deleteService(String expression, String url, String newFile) 
    throws ParserConfigurationException, Exception, IOException{
    	
    	boolean alterado = false;
    	DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    	DocumentBuilder db = dbf.newDocumentBuilder();
        Document dom = db.parse(new InputSource(url));
    	
    	TransformerFactory tFactory = TransformerFactory.newInstance();
    	Transformer tFormer = tFactory.newTransformer();
    	XPathFactory factory = XPathFactory.newInstance();
    	XPath xpath = factory.newXPath();
    	
    	XPathExpression expre = xpath.compile(expression);
    	NodeList nodeList = (NodeList) expre.evaluate(dom, XPathConstants.NODESET);
    	
    	for (int i = 0; i < nodeList.getLength(); i++) {
    		
    		//System.out.println(nodeList.getLength());
    		Node node = nodeList.item(i);
    		System.out.println(node.getNodeName()+ " " + i);
    		node.getParentNode().removeChild(node);
    		alterado = true;
    	}
    	
    	if(alterado){
    		DOMSource domSource = new DOMSource(dom);
    		tFormer.transform(domSource, new StreamResult(new FileOutputStream(url.substring(0, (url.lastIndexOf("\\")+1))+newFile)));
    		System.out.println("PASSOU...");
    	}
    	
    	
    	
}

Desde já agradeço pela a colaboração!

Criado 9 de maio de 2012
Ultima resposta 10 de mai. de 2012
Respostas 3
Participantes 1