[RESOLVIDO]Declaração de Schema no JDOM

5 respostas
furacao123

Estou implementando um aplicação que gera um arquivo XML para ser validada na receita federal (NFe) mas estou na duvida de como declarar esse schemaLocation

<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" versao="1.10">
- <NFe xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.portalfiscal.inf.br/nfe/enviNFe_v1.12.xsd">
os naspaces eu declarei da seguinte maneira
Element nfeProc = new Element("nfeProc");
            nfeProc.setAttribute("versao","1.10");

            nfeProc.setNamespace(Namespace.getNamespace("http://www.portalfiscal.inf.br/nfe"));

            Namespace ds = Namespace.getNamespace("ds", "http://www.w3.org/2000/09/xmldsig#");
            nfeProc.addNamespaceDeclaration(ds);

            Namespace xsi = Namespace.getNamespace("xsi","http://www.w3.org/2001/XMLSchema-instance");
            nfeProc.addNamespaceDeclaration(xsi);

            Document doc = new Document(nfeProc);

            nfeProc.addContent(new GenerateNFe().getElement());
e agora preciso declarar o schemaLocation dentro do nó filho NFe
public class GenerateNFe implements InterfaceNFe{


    public Element getElement() {

        Element NFe = new Element("NFe");

        NFe.addContent(new GenerateInfNFe().getElement());

        return NFe;
    }

}
mas quando adiciono um namespace nesse no NFe ele joga para a tag filha por exemplo fica xmlns="" e o valor vazio. Como eu faço para declarar schemaLocation e namespaces nas tags filhas com JDOM

Obrigado.

5 Respostas

furacao123

a declaração do schemaLocation eu conseguiu resolver na verdade tive que adicionar um atributo para o namespace xsi, agora estou com problemas para colocar namespace na tag filha NFe pois ela fica em branco

A

bom dia,

vc pode passar como fez, para resolver o problema de deixar a tag filha com namespace vazio ?

no meu caso a tag infNFe esta ficando assim :

- - 41
furacao123

é preciso confirmar se pode deixar a tag vazia na filha mas se puder isso ja acontece quando eu seto um namespace na tag pai

valew

T

Olá gente,

Por mais que o tópico seja antigo, creio que por causa da NFe, muitos programadores devem estar tendo problemas semelhantes em gerar o XML pelo JDOM como eu mesmo tive.
Mas vamos a solução.
O JDOM assume que as as tags filhas de uma tag, tenham namespaces distintos, portanto quando colocamos um namespace para a tag NFe e não atribuímos namespace para a tag filha, a tag filha tem namespace diferente. Como não foi atribuído nenhum namespace o resultado é xmlns="".
Basta criar as tag filhas com o mesmo namespace atribuído a tag NFe, assim o JDOM não replica o atributo namespace nelas.
É bacana criar um objeto Namespace e atribuirmos este na criação de cada elemento como segue no códio abaixo:

Namespace ns = Namespace.getNamespace("http://www.portalfiscal.inf.br/nfe");
		
		Element nfe = new Element("NFe", ns);
		Element infNFe = new Element("infNFe", ns);
		infNFe.setAttribute("versao", "2.0");
		infNFe.setAttribute("Id","NFe35080599999090910270550010000000015180051273");
		
		Element ide = new Element("ide", ns);
		Element cUF = new Element("cUF", ns);
		cUF.setText("35");
		ide.addContent(cUF);

		Element cNF = new Element("cNF", ns);
		cNF.setText("518005127");
		ide.addContent(cNF);
		
		infNFe.addContent(ide);
		nfe.addContent(infNFe);	

		Document doc = new Document();
		doc.setRootElement(nfe);

Espero estar ajudando e desejo boa sorte a todos os guerreiros que como eu, estão tendo um trabalhão com solução de NFe.

Abraços,

Tito Livio

furacao123

Valew titvs, acabei resolvendo e esqueci de postar aqui no forum, anda muito corrido :shock:

Uma maneira de fazer eh criar uma interface e nela ja criar a variavel ns com o valor do namespace, pois todas as tags do xml tem de estar com esse namespace.

mas aproveitando o post, voce ja esta gerando os xml e comunicando com a Sefaz titvs porque estou tendo problemas com tags em branco se puder me ajudar ja fiz um post aqui no guj

http://www.guj.com.br/java/244926-retorno-225-nfe#1267934

e vou dar esse post por resolvido

Obrigado a todos…

Criado 26 de março de 2010
Ultima resposta 17 de jun. de 2011
Respostas 5
Participantes 3