Ler XML de uma String

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.

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…

O Xtream é bem legal:

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

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;&quot;;
        
                
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();   
        DocumentBuilder db = dbf.newDocumentBuilder();   
        
        ByteArrayInputStream is = new ByteArrayInputStream (str.getBytes());
        
        Document strXML = db.parse(is);
                
        NodeList list = strXML.getElementsByTagName(&quot;dado&quot;);
        
        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() +&quot; &quot;);
            
            System.out.print(namedNodeMap.getLength() +&quot; &quot;);
                        
            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 &quot;main&quot; 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.