Zum Inhalt springen

XML Value ersetzen


BlinderOpa

Empfohlene Beiträge

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...:)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...