Ler XML de uma String

3 respostas
warley

Olá pessoal,

Eu estou tentando ler um XML de uma string que vem do banco de dados, mas tanto o sax quando o dom tem que passar um obejto file, que no meu caso eu não poderei usar.

O banco de dados eu tenho a seguinte string:

String str = "<objeto><dado id="tituloQuadro">SITUAÇÃO DOS ACESSOS</dado><dado id="numeroFicha">27</dado><objeto>";

Alguem sabe de alguma API que lé um XML de uma string?

Obrigado.

3 Respostas

Lucas_Cavalcanti

tanto no sax quanto no dom é possível usar Readers e Writers pra fazer as operações…

no caso do SAX vc poderia usar algo do tipo:

String str = "<objeto><dado id="tituloQuadro">SITUAÇÃO DOS ACESSOS</dado><dado id="numeroFicha">27</dado><objeto>";

Source src = new StreamSource(new StringReader(str));

//faz as operações de leitura usando esse source

e é basicamente isso…

Pedrosa

O Xtream é bem legal:

http://xstream.codehaus.org/tutorial.html

warley

Eu consegui fazer deste forma:

String str = "&lt;objeto&gt;&lt;dado id=\"exigeObservacao\"&gt;SITUçao DOS ACESSOS&lt;/dado&gt;&lt;dado&gt;Teste Teste&lt;/dado&gt;&lt;/objeto&gt;";
        
                
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();   
        DocumentBuilder db = dbf.newDocumentBuilder();   
        
        ByteArrayInputStream is = new ByteArrayInputStream (str.getBytes());
        
        Document strXML = db.parse(is);
                
        NodeList list = strXML.getElementsByTagName("dado");
        
        for(int i=0; i &lt; list.getLength(); i++){
            
            Node property = list.item(i);
            NamedNodeMap namedNodeMap = property.getAttributes();
            String propertyValeu = property.getTextContent();
            
            System.out.print(property.getNodeName() +" ");
            
            System.out.print(namedNodeMap.getLength() +" ");
                        
            System.out.println(propertyValeu);
        }

Mas estou com erro de causado pelo Ç ou acentos:

[Fatal Error] :1:40: Invalid byte 2 of 3-byte UTF-8 sequence.
Exception in thread "main" org.xml.sax.SAXParseException: Invalid byte 2 of 3-byte UTF-8 sequence.
	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:264)
	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:292)
	at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:98)
	at lerxml.Class1.main(Class1.java:33)

Alguem sabe como eu posso resolver este erro?
Obrigado.

Criado 23 de junho de 2008
Ultima resposta 23 de jun. de 2008
Respostas 3
Participantes 3