- Forum-Beiträge: 5
27.11.2018, 07:32:22 via Website
27.11.2018 07:32:22 via Website
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.:
<root>
<Ebene1>
<Ebene2>
<Ebene2>
</Ebene1>
</root>
C# Code:
XElement xml = this.LoadXml("testdaten.xml");
this.AddElement(xml, "root/Ebene1/Ebene2", "NewElem", "Value");
XElement newElem = this.GetElement(xml, "root/Ebene1/Ebene2/NewElem")
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:
Element xml = this.LoadXml("testdaten.xml");
this.AddElement(xml, "root/Ebene1/Ebene2", "NewElem", "Value");
Element newElem = this.GetElement(xml, "root/Ebene1/Ebene2/NewElem")
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