- 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
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.