org.w3c.dom.Element - Neues Element hinzufügen

AnnaBauer21

AnnaBauer21

Neues Mitglied
Threadstarter
Hallo meine Lieben,

ich habe leider keine Lösung für mein Problem gefunden und mache deshalb ein neues Thema auf.

  • Ich versuche einen bestehenden Code aus C# in Java / Android umzusetzen.
  • Es geht darum eine XML einzulesen und ein neues Element hinzuzufügen.
  • In 'AddElement' wird dem übergebenen XElement (System.Xml.Linq.XElement) ein neus Element hinzugefügt.
  • Nachdem die 'AddElement' Methode verlassen wurde, ist das neue Element in 'xml' vorhanden und kann mit 'GetElement' ermittelt werden.
  • In Java / Android ist es anscheinend notwendig 'Document' zu verwenden um neue 'Element' Objekte zu erstellen.
  • In Java / Android habe ich nun das Problem, dass nach verlassen der 'AddElement' Methode das neue Element in 'xml' NICHT vorhanden ist

Testdaten Bsp.:
Code:
<root>
  <Ebene1>
    <Ebene2>
    <Ebene2>
  </Ebene1>
</root>
C# Code:
Code:
XElement xml = this.LoadXml("testdaten.xml");
this.AddElement(xml, "root/Ebene1/Ebene2", "NewElem", "Value");
XElement newElem = this.GetElement(xml, "root/Ebene1/Ebene2/NewElem")
Code:
private void AddElement(XElement xml, string relTagPath, string newElemName, string newElemValue = "")
{
  // Ermittelt, ob der angegebene Elementpfad dem obersten XML-Element entspricht
  XElement parentElem;
  if (relTagPath.Equals(xml.Name.ToString()))
  {
      parentElem = xml;
  }
  else
  {
      parentElement = this.GetElement(xml, relTagPath);
  }

  XElement newElem = new XElement(newElemName);
  if (!string.IsNullOrWhiteSpace(newElemValue))
  {
      newElem.SetValue(newElemValue);
  }

  parentElem.Add(newElem);
}
Java / Android Code:
Code:
Element xml = this.LoadXml("testdaten.xml");
this.AddElement(xml, "root/Ebene1/Ebene2", "NewElem", "Value");
Element newElem = this.GetElement(xml, "root/Ebene1/Ebene2/NewElem")
Code:
private void AddElement(Element xml, string relTagPath, string newElemName, string newElemValue = "")
{
  // Ermittelt, ob der angegebene Elementpfad dem obersten XML-Element entspricht
  Element parentElem;
  if (relTagPath.Equals(xml.Name.ToString()))
  {
      parentElem = xml;
  }
  else
  {
      parentElement = this.GetElement(xml, relTagPath);
  }

  Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
  doc.adoptNode(parentElem);

  Element newElem = doc.createElement(newElemName);
  if (!newElemValue.equals("")
  {
      newElem.SetTextContent(newElemValue);
  }

  parentElem.appendChild(doc.importNode(newElem, true);
}
Ich hoffe sehr, dass ihr mir helfen könnt!

Liebe Grüße
Anna
 
Oben Unten