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>