O problema é o seguinte: Eu recebo informações que um usuário digita nos campos (JTextField) de uma aplicação que eu fiz.
Tenho que passar essas informações para um outtro programa também feito em Java para que esse envie para um banco de dados. Só que eu não posso passar os dados na forma como eu pego, ou seja, String e int. Devo passar esses valores para um documento XML, enviar o documento. Assim, quando o outro programa receber o documento ele vai ler, pegar essas informações e inserir no banco.
Será que alguém pode me ajudar? Pegeui uns livros, já cansei de pesquisar na net, mas não acho nada parecido com o q estou precisando. Quando acho está muito abstrato…
try{//pego valroes de outro lugar e converto para String para por no arquivo xml que vou gerar abaixoStringsentPacktes=Integer.toString(finalSentCont);StringsentBytes=Integer.toString(finalSentBytes);intpr=(int)(Math.random()*50);StringpridValor=Integer.toString(pr);try{//gera o Document DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();DocumentBuilderbuilder=factory.newDocumentBuilder();doc=builder.newDocument();//adiciona os elementos e atributos Elementrelatorio=doc.createElement("relatorio");Elementprid=doc.createElement("Prid");prid.setAttribute("id",pridValor);Elementid=doc.createElement("Id");id.setAttribute("type","6");id.appendChild(doc.createTextNode(pridValor));prid.appendChild(id);ElementrefId=doc.createElement("RefID");refId.setAttribute("type","6");refId.appendChild(doc.createTextNode(this.pridRef));prid.appendChild(refId);ElementpktCont=doc.createElement("PacketCount");pktCont.setAttribute("type","1");pktCont.appendChild(doc.createTextNode(sentPacktes));prid.appendChild(pktCont);ElementbyCont=doc.createElement("ByteCount");byCont.setAttribute("type","1");byCont.appendChild(doc.createTextNode(sentBytes));prid.appendChild(byCont);relatorio.appendChild(prid);doc.appendChild(relatorio);
//Realiza a saida do XML para o arquivoTransformertrans=TransformerFactory.newInstance().newTransformer();trans.setOutputProperty(OutputKeys.INDENT,“yes”);trans.transform(newDOMSource(doc),newStreamResult(newFileWriter(newFile(“c:/teste.xml”))));// vai gerar um arquivo chamado teste.xml na raiz do drive C: do Windows.
// aki quando vc chamar o contrutor converter, passe o caminho(path onde esta o arquivo q vc quer ler//por exemplo "C:/teste.xmlpublicCoverter(Stringpath){this.filepath=path;try{dbf=DocumentBuilderFactory.newInstance();db=dbf.newDocumentBuilder();
docResult=db.parse(this.filepath);}catch(Exceptione){e.printStackTrace();System.err.println("Um erro ocorreu ao abrir o arquivo de leitura");System.exit(-1);}//chama o metodo que vai ler o arquivoLeArq(docResult);}publicvoidLeArq(Documentdoc){Elementedp=(Element)doc.getElementsByTagName("dsDataPath").item(0);NodeListedpchildren=edp.getChildNodes();NodeListifRole,prc=null;ElementdpPrid;Stringnext;Stringespecifico,result;//variaveis q vao receber os valores do arquivo xml q vc esta lendoStringrole,capSetName,direction;for(inti=0;i<edpchildren.getLength();i++){if((edpchildren.item(i)!=null)&&(edpchildren.item(i).getNodeName().compareToIgnoreCase("#text")!=0)){dpPrid=(Element)edpchildren.item(i);//a variavel role recebe o valor que tem na tag com o nome dsDataPathRoles o mesmo para os abaixorole=dpPrid.getElementsByTagName("dsDataPathRoles").item(0).getFirstChild().getNodeValue();capSetName=dpPrid.getElementsByTagName("dsDataPathCapSetName").item(0).getFirstChild().getNodeValue();direction=dpPrid.getElementsByTagName("dsDataPathIfDirection").item(0).getFirstChild().getNodeValue();next=dpPrid.getElementsByTagName("dsDataPathStart").item(0).getFirstChild().getNodeValue// basicamente o procedimento é este, vai ter q fazer varios for para ler todo o arquivo
// para acahr uma tag em especial que vc queira provavelmente vai ter de usar XPath que indica o caminho onde esta a tag
//por exmplo a expressao xpath://pessoa/idade/[text()=‘23’] seleciona todos os nós pessoa que tem um nó filho idade com texto 23