<?xml version="1.0" encoding="UTF-8"?>
<Root>
<ns:Lote>
<ns:Id>0001</ns:Id>
<ns:Pais>BR</ns:Pais>
<ns:Data>01/01/2014</ns:Data>
<ns:Cabecalho>
<ns:DataOrdem>01/02/2014</ns:DataOrdem>
<ns:CNPJ>CNPJ</ns:CNPJ>
<ns:Detalhes>
<ns:Tipo>NORMAL</ns:Tipo>
<ns:Mercadoria>MOUSE</ns:Mercadoria>
</ns:Detalhes>
<ns:Detalhes>
<ns:Tipo>PRIORIDADE</ns:Tipo>
<ns:Mercadoria>NOTEBOOK</ns:Mercadoria>
</ns:Detalhes>
<ns:Detalhes>
<ns:Tipo>NORMAL</ns:Tipo>
<ns:Mercadoria>MONITOR</ns:Mercadoria>
</ns:Detalhes>
</ns:Cabecalho>
</ns:Lote>
</Root>
Criar XML
try {
// Criar o arquivo XML manualmente
FileWriter file = new FileWriter("c:\\saidaDados.xml");
BufferedWriter writer = new BufferedWriter(file);
StringBuffer xml = new StringBuffer();
xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
xml.append("<ns:Lote>");
xml.append("<ns:Id>" + "0001" + "</ns:Id>");
xml.append("<ns:Pais>BR</ns:Pais>");
xml.append("<ns:Data" + "01/01/2014"+ "</ns:Data");
xml.append("<ns:Cabecalho>");
xml.append("<ns:DataOrdem>" + "01/02/2014" + "</ns:DataOrdem>");
xml.append("<ns:CNPJ>" + "00.000.000/0000-00" + "</ns:CNPJ>");
for (int i = 0; i < 3; i++) {
xml.append("<ns:Detalhes>");
xml.append("<ns:Tipo>" + "NORMAL" + i + "</ns:Tipo>");
xml.append("<ns:Mercadoria>" + "MOUSE" + i + "</ns:Mercadoria>");
xml.append("</ns:Detalhes>");
}
xml.append("</ns:Cabecalho>");
xml.append("</ns:Lote>");
xml.append("</Root>");
// Criar objeto DOM a partir do StringBuffer (utilizar recursos do DOM)
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
Node document = parser.parse(new InputSource(new StringReader(xml.toString())));
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
//Omitir o atributo standalone
((org.w3c.dom.Document) document).setXmlStandalone(true);
//Identação
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
//Gravar o XML
ByteArrayOutputStream s = new ByteArrayOutputStream();
transformer.transform(new DOMSource(document), new StreamResult(s));
writer.write(new String(s.toByteArray()));
writer.flush();
writer.close();
} catch (Exception e) {
e.printStackTrace();
Ler XML
public void lerXml() throws SAXException, IOException{
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
String ArquivoXML = "c:\\entradaDados.xml";
Document doc = null;
doc = db.parse(ArquivoXML);
Element raiz = doc.getDocumentElement();
NodeList nodeLote = raiz.getElementsByTagName("ns:Lote");
Element elementLote = (Element)nodeLote.item(0);
String pais = recuperaValorDoElemento(elementLote, "ns:Pais");
String processo = recuperaValorDoElemento(elementLote, "ns:Id");
String cliente = recuperaValorDoElemento(elementLote, "ns:CNPJ");
// Imprimir valores
System.out.println("Pais: " + pais);
System.out.println("ProcessID: " + processo);
System.out.println("CNPJ: " + cliente);
NodeList listDetalhes = doc.getElementsByTagName("ns:Detalhes");
for (int i = 0; i < listDetalhes.getLength(); i++){
Element elemetItem = (Element)listDetalhes.item(i);
String nrPedidoItem = recuperaValorDoElemento(elemetItem, "ns:Tipo").trim();
String incoterm = recuperaValorDoElemento(elemetItem, "ns:Mercadoria");
// Imprimir valores
System.out.println("PEDIDO:" + nrPedidoItem);
System.out.println("INCOTERM: " + incoterm);
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
}
public String recuperaValorDoElemento(Element element, String nomeDoElemento) {
NodeList nodeList = element.getElementsByTagName(nomeDoElemento);
// Verifica se a lista é nula
if (nodeList == null) {
return "";
}
// Verifica se o item é nulo
Element elemento = (Element) nodeList.item(0);
if (elemento == null) {
return "";
}
// Verifica se o valor é nulo
Node node = elemento.getFirstChild();
if (node.getNodeValue().trim() == null) {
return "";
}
// Retorna o valor
return node.getNodeValue().trim();
}
Nenhum comentário:
Postar um comentário