Duvida com JDOM

9 respostas
malves_info

Galera eu estou utilizando JDOM para gerar e ler meus arquivos XML. Criei Tags com atributos ID, mas gostaria de quando fosse ler estes XML’s fazer um filtro pelos ID. Ex.: quero que me traga dos dados somente daqueles que tiverem o ID 545.

Agradeço a Ajuda!!!

[]'s

9 Respostas

T

http://www.jdom.org/docs/apidocs/org/jdom/xpath/XPath.html

Use o XPath.

Por exemplo, digamos que você tenha um XML assim:

<raiz>
   <nome>
       <prenome></prenome>
       <sobrenome id="abc"></sobrenome>
   </nome>
</raiz>

Para pegar todos os elementos “sobrenome” cujo ID é “abc”, você usaria a expressão XPath:

/raiz/nome/sobrenome[@id='abc']/*
malves_info

Mas em que método ou objeto eu utilizaria esta expressão?

[]'s

T

Eu passei um link para as APIs de XPath para serem usadas com o JDom. Estude um pouquinho (ou procure no Google)

moacirjava

Meu, usa o XStream, é show!

malves_info

Bom fiz um exemplo com JDOM mesmo mas estou com problemas

SAXBuilder builder = new SAXBuilder();
try{
document = builder.build("c:/arquivo.xml");
			
			Element tagAtributo =  document.getRootElement();
			List<Element> list = XPath.selectNodes(tagAtributo, "//*");
}catch(Exception e){
e.printStackTrace();
}

Mas da o seguinte erro:

Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/JaxenException
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at org.jdom.xpath.XPath.newInstance(XPath.java:134)
	at org.jdom.xpath.XPath.selectNodes(XPath.java:345)
	at timesheet.offline.ControlXML.readFile(ControlXML.java:98)
	at timesheet.offline.ControlXML.main(ControlXML.java:115)
Caused by: java.lang.ClassNotFoundException: org.jaxen.JaxenException
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	... 6 more
T

http://www.onjava.com/pub/a/onjava/2005/01/12/xpath.html

Dá a impressão que falta pelo menos um jar (jaxen-jdom.jar), ou mais, no seu classpath.

malves_info

Coloquei o jaxen-jdom.jar na lib do meu projeto e esta com mesmo problema…

T

Veja o link que lhe passei. Parece que deve ter mais JARs (não sei quais) que você tem de pôr no seu classpath.

Para localizar qual é o JAR que contém essa classe ( org/jaxen/JaxenException ). uma dica:

Se você pegar o JAR e abrir com um programa que sabe ler arquivos .ZIP (como o WinZip ou o WinRAR), então você deve achar um arquivo org/jaxen/JaxenException.class. Ou seja, se você tem algum programa que procura dentro de arquivos (como o Windows Desktop Search ou o Google Desktop Search), você pode procurar o tal jar tentando procurar o arquivo JaxenException.class. OK?

malves_info

É vero… coloquei jaxen-jdom.jar + jaxen-core.jar + saxpath.jar e funcionou bacana!

Vlw thingol pela ajuda e desculpe a Ignorância kkkkkkk… abraços!

Criado 26 de janeiro de 2009
Ultima resposta 26 de jan. de 2009
Respostas 9
Participantes 3