E ai pessoa, blz?
Seguinte, tenho o xml:
<?xml version="1.0" encoding="UTF-8"?><teste><t1>TESTE 1</t1><t2>TESTE2</t2></teste>
Não estou conseguindo dar o parse nele. O Objeto doc fica nulo (org.w3c.dom.Document).
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setIgnoringElementContentWhitespace(true);
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File(xml));
Agora, se eu indento o xml, aí ele faz o parse normal e meu processo continua normal. A questão é que eu tenho que trabalhar com o XML em uma linha só …
Alguém sabe como resolver ?!?!!?!?!
Obrigado.
Cara, não pude testar agora, mas ja tentou tirar a linha 2 e 3 do seu código?
ja sim … acabei de tentar … continuou nulo o objeto 
Estranho cara,
To trabalhando em uma classe que faz isso:
Document document;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
File f = new File("criarSessao.xml");
document = builder.parse(f);
e ta servindo tanto pra xml na linha quanto identado.
Ja que vc tbm ta trabalhando agora com XML, desculpa aproveitar a situação, mas se puder dar uma olhada nesse post http://www.guj.com.br/posts/list/105627.java
La tem o que to usando e ta servindo pros dois tipos de XML, e também tem um problema q s vc puder me ajudar agradeço.
Abraço
após que ele faz o parse, quando posiciono o mouse em cima da variavel aparece isso:
(org.apache.xerces.dom.DeferredDocumentImpl) [#document: null]
nao sei o que fazer … =(
Tenta e me fala se funfou…
depois de tudo q vc ja ta fazendo coloca
Element elem = document.getDocumentElement();
tb nem deu certo… agora aparece a mensagem:
(org.apache.xerces.dom.DeferredElementImpl) [#element: null]
preciso trabalhar com o xml em uma linha só pois em várias linhas o valor do digest value, quando eu assino, está diferente do que deveria ser…
Usanso o JColtrane (http://jcoltrane.sourceforge.net/index_pt.html) Consegui ler numa boa.
Seguem as classes:
[code]public class LeitorXML {
@EndElement
private void lerXML(@CurrentBranch String branch,@Body String body){
System.out.println(branch);
System.out.println(body);
}
}[/code]
[code]public class LeitorXMLTeste {
/**
* @param args
*/
public static void main(String[] args) {
SAXParser parser=null;
try {
parser= SAXParserFactory.newInstance().newSAXParser();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
File file=new File("D:\\workspace\\Teste\\src\\ex.xml");
if(parser!=null){
InputSource input=new InputSource(file.getAbsolutePath());
try {
parser.parse(input,new JColtraneXMLHandler(new LeitorXML()));
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}[/code]
Aqui ele leu e imprimiu direito o xml.
Espero ter ajudado.
Entao, eu preciso que esse xml esteja dentro do objeto org.w3c.dom.Document, pra poder assinar… dá certo ?
Pega as duas classes que coloquei e faz um teste. Aqui foi impresso o seguinte resultado:
/teste/t1/
TESTE 1
/teste/t2/
TESTE2
/teste/
Que era o esperado.
Só pegar o Jar do JColtrane no link, colocar no seu projeto e testar…