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?
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
String str = "<objeto><dado id=\"exigeObservacao\">SITUçao DOS ACESSOS</dado><dado>Teste Teste</dado></objeto>";
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 < 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.