XML Nf-e [ RESOLVIDO ]

Ola pessoal, minha duvida é bem simples para quem conhece java e manipulação de arquivos a fundo.
Criei uma classe que ira ler um arquivo de um sistema, o arquivo sintegra.txt (exemplo abaixo).

549446491400015701   001099110109000104641         000002000000000000300000000000000000000000211770000000000000000000000001700
75200904012009043000831                 EMBALAGEM PARMISSIMO 50GR KG                         KG    000000000000000000000000000

75200904012009043004641                 ALCOOL 70% onu 1170,3 II                             LT    000000000000000000000000000
7004510915000106152188762     20090430PA08   88172123520000000333334000000003333340000000004000000000000000000000000000000001N

ele esta lendo normal então desses dados pego somente os que começam com 75 pois é o código referente a produtos, ate ai tudo ok, quando gero o XML usando uma lib ele tambem gera ok, mas o xml esta todo desalinhado e pelo que li no pdf do manual de integração - contribuinte:

A declaração do namespace da assinatura digital deverá ser realizada na própria tag
, conforme exemplo abaixo.
Cada documento XML deverá ter o seu namespace individual em seu elemento raiz. No
caso específico do lote de envio da NF-e, cada NF-e deverá ter declarado o seu
namespace individual.
Segue abaixo um exemplo:

<?xml version="1.0" encoding="UTF-8"?>
<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01">
       <idLote>200602220000001</idLote>
       <NFe xmlns="http://www.portalfiscal.inf.br/nfe">
              <infNFe Id="NFe31060243816719000108550000000010001234567890" versao="1.01">
              ...
              <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
              ...
        </NFe>
      <NFe xmlns="http://www.portalfiscal.inf.br/nfe">
              <infNFe Id="NFe31060243816719000108550000000010011234567900" versao="1.01">
              ...
              <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
              ...
        </NFe>
      <NFe xmlns="http://www.portalfiscal.inf.br/nfe">
              <infNFe Id="NFe31060243816719000108550000000010021234567916" versao="1.01">
              ...
              <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
              ...
        </NFe>
</enviNFe>

Pessoal não entendo como fazer isso pois quando tento configurar o namespace me retora uma exception, acredito que isso ocorra porque eu não saiba como lidar com xml, a lib foi primeira vez que usei não estou acostumado com webservices, então venho aqui postar o código que ja criei para ver se consigo terminar minha tarefa, a parte referente a produtos tem num exemplo da NF-e nesse manual de Integração, mas nao entendo como fazer as tag xml para ficar tudo alinhadinho para quando for enviado estar de forma correta, abaixo colocarei o código que criei e um exemplo de como esta ficando meu xml, espero que alguem possa me ajudar pois sei que é simples mas não tenho conhecimento pra terminar, obrigado.

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class Textread {

	private String inFilename;
	private String outFilename;
	
	public Textread(String inFilename, String outFilename) {
		this.inFilename = inFilename;
		this.outFilename = outFilename;
	}
	
    private void writeXmlFile(Document doc, String filename) throws TransformerConfigurationException, TransformerException {
        Source source = new DOMSource(doc);
        File file = new File(filename);
        Result result = new StreamResult(file);
        Transformer xformer = TransformerFactory.newInstance().newTransformer();
        xformer.transform(source, result);
    }
	
	public void build() {
		try {
			File file = new File(inFilename);
			if (file.exists()) {
				Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
				
				FileInputStream in = new FileInputStream(file);
				Scanner scan = new Scanner(in);
				String result = null;
				
				Pattern p = Pattern.compile("7520\\d\\d*" + "\\S.*");
				
				//Element namespace = document.createElementNS("http://www.portalfiscal.inf.br/nfe", "NFe");
				//document.appendChild(namespace);
				
				Element rootNode = document.createElement("produtos");								
				document.appendChild(rootNode);
				while (scan.hasNext()) {
					String readLine = scan.nextLine();
					Matcher matcher = p.matcher(readLine);
					if (matcher.find()) {
						result = matcher.group();
					}
					if (result != null) {
						//TODO fazer o decode da linha												
						
						Element productElement = document.createElement("produto");
						productElement.setTextContent(result);
						rootNode.appendChild(productElement);
	
					}				 
				}
				this.writeXmlFile(document, "src/archives/NF-e.xml");
			} else {
				throw new FileNotFoundException(outFilename);
			}
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (TransformerConfigurationException e) {
			e.printStackTrace();
		} catch (TransformerException e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String args[]) {
		if (args.length < 2) {
			System.out.println("Usage: java -jar SeuJar.jar inputFileName outputFileName");
			return;
		}
		Textread textRead = new Textread(args[0], args[1]);
		textRead.build();
	}

}

aqui o xml aquele standalone=“no” ali no cabçalho vai complicar ?

<?xml version="1.0" encoding="UTF-8" standalone="no"?><produtos><produto>75200904012009043000831                 EMBALAGEM PARMISSIMO 50GR KG                         KG    000000000000000000000000000</produto><produto>75200904012009043004641                 ALCOOL 70% onu 1170,3 II                             LT    000000000000000000000000000</produto><produto>7520090401200904301010101               QUEIJO PARMESAO FORMAS F4 KG                         KG    000000000000000000000000000</produto><produto>7520090401200904301010131               GAS- GLP MISTURA KG                                  KG    000000000000000000000000000</produto><produto>7520090401200904301010191               QUEIJO PROVOLONE KG                                  KG    000000000000000000000000000</produto><produto>7520090401200904301293561               POTE PARMISSIMO 75GR                                 UN    000000000000000000000000000</produto><produto>752009040120090430800021                ROTULO POTE 150GRS UN                                UN    000000000000000000000000000</produto><produto>752009040120090430800141                QJ.RAL.PARMISSIMO SH CX25X10X5GRS                    CX    000000000000000000000000000</produto><produto>752009040120090430800172                QJ.RAL.PARMISSIMO SH PC5GRS                          PC    000000000000000000000000000</produto><produto>752009040120090430800181                DOCE DE LEITE CREMOSO CX12X450GRS                    CX    000000000000000000000000000</produto><produto>752009040120090430800182                DOCE DE LEITE CREMOSO PT 450GRS                      PT    000000000000000000000000000</produto><produto>752009040120090430800191                DOCE DE LEITE C/CHOCOLATE CX12X450GRS                CX    000000000000000000000000000</produto><produto>752009040120090430800192                DOCE DE LEITE C/CHOCOLATE PT 450GRS                  PT    000000000000000000000000000</produto><produto>752009040120090430800201                DOCE DE LEITE C/AMEIXAS CX12X450GRS                  CX    000000000000000000000000000</produto><produto>752009040120090430800202                DOCE DE LEITE C/AMEIXAS PT 450GRS                    PT    000000000000000000000000000</produto><produto>752009040120090430800231                QJ.RAL.PARMEZZO CX50X40GRS                           CX    000000000000000000000000000</produto><produto>752009040120090430800232                QJ.RAL.PARMEZZO PC40GRS                              PC    000000000000000000000000000</produto><produto>752009040120090430800241                QJ.RAL.PARMEZZO CX5X400GRS                           CX    000000000000000000000000000</produto><produto>752009040120090430800242                QJ.RAL.PARMEZZO PC400GRS                             PC    000000000000000000000000000</produto><produto>752009040120090430800301                QJ.PARMISSIMO COALHO KG                              KG    000000000000000000000000000</produto><produto>752009040120090430800352                QJ.RAL.PARMISSIMO PC 50GRS                           PC    000000000000000000000000000</produto><produto>752009040120090430800381                QJ.RAL.PARMISSIMO CX50X50GRS                         CX    000000000000000000000000000</produto><produto>752009040120090430800382                QJ.RAL.PARMISSIMO PC50GRS                            PC    000000000000000000000000000</produto><produto>752009040120090430800411                TEMPERO COMPLETO PARMISSIMO CX20X270GRS              CX    000000000000000000000000000</produto><produto>752009040120090430800521                QJ.RAL.PARMISSIMO LIGHT CX50X50GRS                   CX    000000000000000000000000000</produto><produto>752009040120090430800522                QJ.RAL.PARMISSIMO LIGHT PC50GRS                      PC    000000000000000000000000000</produto><produto>752009040120090430800691                QJ.RAL.PARMISSIMO CX25X100GRS                        CX    000000000000000000000000000</produto><produto>752009040120090430800692                QJ.RAL.PARMISSIMO PC100GRS                           PC    000000000000000000000000000</produto><produto>752009040120090430801061                QJ.RAL.PARMISSIMO CX10X500GRS                        CX    000000000000000000000000000</produto><produto>752009040120090430801062                QJ.RAL.PARMISSIMO PC500GRS                           PC    000000000000000000000000000</produto><produto>752009040120090430801091                QJ.RAL.PARMISSIMO MUSSA.S/DESID. CX10X500GRS         CX    000000000000000000000000000</produto><produto>752009040120090430801941                QJ.RAL.PARMISSIMO PT CX24X75GRS                      CX    000000000000000000000000000</produto><produto>752009040120090430801942                QJ.RAL.PARMISSIMO PT PT 75GRS                        PT    000000000000000000000000000</produto><produto>752009040120090430801961                QJ.RAL.PARMISSIMO PT CX24X150GRS                     CX    000000000000000000000000000</produto><produto>752009040120090430801962                QJ.RAL.PARMISSIMO PT PT 150GRS                       PT    000000000000000000000000000</produto><produto>752009040120090430802081                QJ.PARMISSIMO PARMESAO F4 GORDO KG                   KG    000000000000000000000000000</produto><produto>752009040120090430802151                QJ.PARMISSIMO PARMESAO CUNHAS KG                     KG    000000000000000000000000000</produto><produto>752009040120090430802461                QJ.PARMISSIMO PROV.F5 KG                             KG    000000000000000000000000000</produto><produto>752009040120090430802511                QJ.PARMISSIMO PROV.ESPETO PRATICO KG                 KG    000000000000000000000000000</produto><produto>752009040120090430802521                QJ.PARMISSIMO PROV.ESPETO KG                         KG    000000000000000000000000000</produto><produto>752009040120090430802531                QJ.PARMISSIMO PROV.PEDACOS KG                        KG    000000000000000000000000000</produto><produto>752009040120090430802541                QJ.PARMISSIMO PROV.TRANCA KG                         KG    000000000000000000000000000</produto><produto>752009040120090430802601                QJ.PARMISSIMO PROV.SALANETE PEQ. KG                  KG    000000000000000000000000000</produto><produto>752009040120090430803011                QJ.PARMISSIMO PARMESAO CUBOS KG                      KG    000000000000000000000000000</produto><produto>752009040120090430803021                QJ.PARMISSIMO PARMESAO PALITO KG                     KG    000000000000000000000000000</produto><produto>752009040120090430803041                QJ.RAL.PARMISSIMO GROSSO/IND. CX5KGS                 CX    000000000000000000000000000</produto><produto>75200904012009043090901                 EXPOSITOR PARMISSIMO UD                              UD    000000000000000000000000000</produto><produto>75200904012009043090901                 EXPOSITOR PARMISSIMO UD                              UD    000000000000000000000000000</produto></produtos>                                                             

Eae pessoal, dos feras ninguem ???

eae pessoal, to precisando de ajuda, alguem ai ?

cara o seu problema é com a assinatura do xml?!

aqui tem alguma coisa:
http://www.guj.com.br/posts/list/30/83758.java
http://www.guj.com.br/posts/list/83758.java#448037

pessoal,
assim:
tenho varios problemas, mas vou tentar colocando o primeiro.

pego os dados de um TXT via regex, tudo blz, eu trago a linha toda, após isso preciso escrever esses dados num XML o xml ja esta sendo gerado por minha classe acima ok, mas preciso popular esse xml nos padrões da receita, então pergunto:

como adiciono essas linhas no meu xml, pois de tudo que tento tomo uma exception, e não tenho conhecimento o suficiente dessa API para escrever no xml ?

<?xml version="1.0" encoding="UTF-8"?>  
<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01">  

problema 2º

dessa linha:

<produto>752009040120090430802601                QJ.PARMISSIMO PROV.SALANETE PEQ. KG                  KG    000000000000000000000000000</produto>

eu preciso pegar somente o codigo referente ao produto entao consegui desta forma pegndo os dados pela posição na linha ali (18,32), agor pergunto se é a melhor saida? pois esta me gerando um item duplicado no final, somente no fim me traz o ultimo tem repetido porque ?, como poso fazer pra resolver ?

Element productElement = document.createElement("produto");  
     productElement.setTextContent(result.substring(18, 32));  
     rootNode.appendChild(productElement); 

eu precisava que o xml ficasse dessa forma e nessa formatação tem como utilizando dom ?

<det nItem="1">
      <prod>
        <cProd>00001</cProd>
        <cEAN />
        <xProd>Agua Mineral</xProd>
        <CFOP>5101</CFOP>
        <uCom>dz</uCom>
        <qCom>1000000.0000</qCom>
        <vUnCom>1</vUnCom>
        <vProd>10000000.00</vProd>
        <cEANTrib />
        <uTrib>und</uTrib>
        <qTrib>12000000.0000</qTrib>
        <vUnTrib>1</vUnTrib>
      </prod>

Não sei se entendi mais vai a dica.

Você usa expressão regular para pegar as linhas do arquivo do sintegra certo.

Essa expressão regular vai te trazer todas as linha 75 que é onde estam as informações do produto.

Até ai pelo que vi no seu codigo você esta fazendo certinho.

Agora para gerar o xml da Nfe usa um framework chamado XStream http://xstream.codehaus.org.

[code]
//crei uma classe que represente a det do xml
import java.util.List;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

@XStreamAlias(“det”)
public class DetalheNf {

@XStreamAsAttribute
private int nItem=0;

private List<Produto> prod;

}

}[/code]

//crei uma classe que represente a <tag> prod do xml
@XStreamAlias("prod")
public class Produto {

	private String cProd;
	private String cEAN;
	private String xPro;
	private String CFOP;
	private String uCom;
	private String qCom;
	private String vUnCom;
	private String vProd;
	private String cEANTrib;
	private String uTrib;
	private String qTrib;
	private String vUnTrib;
        
        //Gets e Sets.......
}

Agora é só adicionar os valores da linha do arquivo nos seus respectivos atributos.

Depois é só utilizar

XStream stream = new XStream();
stream.processAnnotations(DetalheNf.class);
System.out.println(stream.toXML(ObjetoDet));

Acho que isso vai te ajudar até mais

Obrigado, vou tetar fazer aqui, vc foi um dos poucos que me ajudou vc e o Dario, mas não da pra fazer usando o que eu ja fiz com org.w3c.dom ? se não der vou deletar tudo e recomeçar com essa framework XStream, mas queria terminar o que ja comecei alguem pode ajudar ? poucas vezes vim aqui pedir ajuda mas dessa vez estou realmente precisando, obrigado.

Resolvido, só não vou postar a solução porque tive que pagar por ela, obrigado ao GUJ novamente.