Parse em XML

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 :cry:

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…