xml e java  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
nett_fan
What is classpath?

Membro desde: 25/10/2007 11:48:29
Mensagens: 8
Offline

ola a todos, tenho uma aplicação java que acede aos metodos remotos de um webservice, esses metodos devolvem a informação em xml.

Result = <NewDataSet>
<Table>
<altura>180</altura>
</Table>
<Table>
<altura>180</altura>
</Table>
<Table>
<altura>170</altura>
</Table>
<Table>
<altura>176</altura>
</Table>
<Table>
<altura>188</altura>
</Table>
<Table>
<altura>167</altura>
</Table>
</NewDataSet>

como posso capturar a altura?
Jair Rillo Junior
Moderador
[Avatar]

Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline

Dê uma estudada no framework JDOM http://jdom.org/

Jair Rillo Junior

http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate
ronybrand
Thread.start()

Membro desde: 28/05/2003 15:54:00
Mensagens: 29
Offline

Usa o Xstream é bem mais facil de usar, ele faz o mapeamento direto para POJOs (JavaBeans), Listas:
http://xstream.codehaus.org/

Rony Brand
SCJP
nett_fan
What is classpath?

Membro desde: 25/10/2007 11:48:29
Mensagens: 8
Offline

segui um tutorial aqui do forum e fiz o seguinte:


import java.io.*;
import java.net.*;
import java.util.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
/**
*

*/
public class Main {

/** Creates a new instance of Main Xenon*/
public Main() {
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here

try {
System.out.println("main programa");
LeXml();

} catch (Exception ex) {
// TODO handle custom exceptions here
}
}
//################################################################
private static void LeXml( ) throws SAXException, IOException
{
String pesoAtomico="";
try
{

// Call Web Service Operation
javaapplication15.Periodictable service = new javaapplication15.Periodictable();
javaapplication15.PeriodictableSoap port = service.getPeriodictableSoap();
// TODO initialize WS operation arguments here
java.lang.String elementName = "Xenon";
// TODO process result here
java.lang.String result = port.getAtomicWeight(elementName);

System.out.println("Peso = "+ result);

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(result);

Element elem = doc.getDocumentElement();

NodeList nl = elem.getElementsByTagName("Table");

for( int i=0; i<nl.getLength(); i++ )
{
Element tagTable = (Element) nl.item( i );

// pega os dados cadastrado para o usuario atual
pesoAtomico = getChildTagValue( tagTable, "Altura" );

}
}
catch(Exception ex)
{


}

}

//#################################################################
private static String getChildTagValue( Element elem, String tagName )
{

NodeList children = elem.getElementsByTagName( tagName );
if( children == null ) return null;
Element child = (Element) children.item(0);
if( child == null ) return null;
return child.getFirstChild().getNodeValue();
}



//################################################################

}

do webservice retorna um xml com a seguinte estrutura

<NewDataSet>
<Table>
<Altura>131.3</Altura>
</Table>
</NewDataSet>

tentei correr coloquei um system.out.println() e o problema parece estar nas seguintes linhas de codigo:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(result);


agradecia a vossa ajuda.
nett_fan
What is classpath?

Membro desde: 25/10/2007 11:48:29
Mensagens: 8
Offline

o erro é na instruçao :
Document doc = db.parse(result);

volto a referir que eu nao leio o conteudo de um ficheiro xml, em result tenho o que é retornado de um a chamada a um metodo remoto de um webservice.
nett_fan
What is classpath?

Membro desde: 25/10/2007 11:48:29
Mensagens: 8
Offline

será que ninguem me pode ajudar?
Jair Rillo Junior
Moderador
[Avatar]

Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline

Acho que ninguem vai ficar lendo o seu codigo (ainda mais fora da tag CODE) e tentar adivinhar o erro
Por favor, poste também qual exception ocorre. Alias, tente pesquisar antes sobre a Exception no google, provavelmente você irá encontrar a resposta para o seu problema

Jair Rillo Junior

http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate
nett_fan
What is classpath?

Membro desde: 25/10/2007 11:48:29
Mensagens: 8
Offline


na instrução ->Document doc = db.parse(result); dá o seguinte erro:
A sintaxe do nome do ficheiro, do nome do directório ou do nome de volume é incorrecta

a variavel result nao tem o caminho para o ficheiro xml , mas sim o resultado de um webservice quem esta em formato xml mas esses dados são guardados numa variavel string result
Jair Rillo Junior
Moderador
[Avatar]

Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline

tente usar o JDOM, ele pode fazer o parse de uma variavel String

Jair Rillo Junior

http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate
jMacaxera
Entusiasta Java
[Avatar]

Membro desde: 29/11/2007 10:03:22
Mensagens: 20
Localização: Foz do Iguaçu
Offline

Uma outra alternativa é utilizar o JAXB. =)
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team