BlinderOpa Geschrieben 6. Oktober 2008 Geschrieben 6. Oktober 2008 Hi, ich möchte eine XML-Datei parsen, ein paar Values anpassen und das ganz danach als String weiterverarbeiten (per HTTP wegschicken..) parsen kein Problem: Document dom = XMLdocumentParser.makeDOM(toUploadSTREAM ); String inhalt = XMLdocumentParser.makeXMLfromDOM2(dom ); //jetzt Values/Atribute in dem Document(=xml) ändern //hier komme ich leider nicht weiter und verfange mich irgendwo in den Childs...-.- //und weiter verarbeiten.. sendString(inhalt); in der XML-File sieht das ungefähr so aus: <document> <child1> <unterchild value="xy"/> <unterchild value="12"/> <unterchild value="34"/> <child1/> <document/> ich möchte jetzt z.b. "value="12"" in "value="ab" ändern... Problem: das einfache String.replace kann ich schlecht verwenden, da evtl. im weiteren XML die Werte nochmal in einem Text oder so stehen könnten. Und das wäre außerdem eine unschöne Lösung... Zitieren
Schiller256 Geschrieben 6. Oktober 2008 Geschrieben 6. Oktober 2008 (bearbeitet) Wäre erstmal schön zu wissen welchen XML Parser du verwendest? Denn mit dem Code kann ich nichts anfangen. Wieso willst du nicht das bearbeitete XML per HTTP versenden? Denn das würde es dem Empfänger eventuell erleichtern damit umzugehen. Bearbeitet 6. Oktober 2008 von Schiller256 Zitieren
BlinderOpa Geschrieben 7. Oktober 2008 Autor Geschrieben 7. Oktober 2008 import javax.xml.xpath.XPath; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; und seine Freunde... das Dokument ist ein import org.w3c.dom.Document; werds mal über die Nodelist versuchen... direkt schicken? naja... im moment habe ich die Notlösung mit String.replace()...und so kann ich beim debuggen gleich sehen, was der da verschicken will... Zitieren
perdian Geschrieben 7. Oktober 2008 Geschrieben 7. Oktober 2008 das Dokument ist ein import org.w3c.dom.Document;Na dann ist es doch einfach mal in die API zu schauen: http://java.sun.com/javase/6/docs/api/org/w3c/dom/Node.html Spontan und ungetestet fallen mir da ein: setNodeValue, getAttributes/setNamedItem, appendChild, ... Zitieren
BlinderOpa Geschrieben 7. Oktober 2008 Autor Geschrieben 7. Oktober 2008 ok... funzt soweit... danke... für Mitleser die's interessiert geht das ungefähr so: //Factorys bauen XPathFactory xpf = XPathFactory.newInstance(); XPath xpath = xpf.newXPath(); //Document einlesen und parsen... Document dom = XMLdocumentParser.makeDOM(toUploadSTREAM ); //dann über xpath statement sich das Child aussuchen und als Node raus holen Node parameterNODE = (Node ) xpath.evaluate("<xpath-statement>"]", dom, XPathConstants.NODE ); //dann z.B. das gewünschte Attribut in ein Node ändern... Node valueNode = parameterNODE.getAttributes().getNamedItem("value" ); //alten wert raus holen String test=valueNode.getNodeValue() //neuen wert setzen valueNode.setNodeValue(newstyles ); //und fertig... diese Änderungen werden gleich in der document-Datei umgesetzt.... man muss also die Nodes nicht wieder in's Document zurück speisen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.