Entwickler-Ecke
Sonstiges (Delphi) - XML-Datei mit mehreren Attributen
huhn - Mi 28.08.13 17:24
Titel: XML-Datei mit mehreren Attributen
Hi Forum,
ich möchte eine XML-Datei einlesen und gewisse Werte ändern, leider funktioniert dies noch nicht so wie will.
Das Format sieht wie folgend aus:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| <Archive code="0"> <String name="container_name" value='"test"' /> <String name="DockableViewDockName" value='"DockArea25"' /> <Point name="scroll_offset" value="Point(0.000000,0.000000)" /> <Archive code="0" name="listview_config"> <Array name="col_id"> <Int32 value="0" /> <Int32 value="1" /> <Int32 value="2" /> <Int32 value="4" /> </Array> <Array name="col_flags"> <Int32 value="8" /> <Int32 value="14" /> <Int32 value="14" /> <Int32 value="14" /> </Array> <Array name="col_width"> <Float value="16.000000" /> <Float value="231.000000" /> <Float value="24.000000" /> <Float value="43.000000" /> </Array> <Int32 name="list_sort_column" value="0" /> <Int32 name="list_sort_order" value="0" /> <Bool name="listview_mode" value="true" /> |
Ich versuche den Wert bei container_name im Attribute value zu ändern.
Ich nutze die XMLLib und mein Code sieht wie folgt aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var PassNode: TDOMNode; Doc: TXMLDocument; begin ReadXMLFile(Doc, path); showmessage(Doc.DocumentElement.ChildNodes.Item[0].Attributes.Item[0].NodeValue+'<>'+Doc.DocumentElement.ChildNodes.Item[0].Attributes.Item[1].NodeValue); Doc.DocumentElement.FindNode('String').Attributes.GetNamedItem('name').? |
ich würde gerne direkt die Variablennamen benutzen und nicht die Nodevalues durchsuchen um den value-Wert zu ändern. Ich hoffe ihr könnt mir helfen.
Gruß
huhn
Martok - Mi 28.08.13 19:40
Ich versteh deine Frage nicht, aber kann das sein, dass du XPath suchst?
Damit könntest du aber eine Expression bauen, die dir das Knoten finden einfacher macht, z.B. (Pseudocode für JS/Mozilla-DOM):
Quelltext
1:
| XPath(documentNode, "/Archive/String[@name='container_name']")[0].setAttribute('value', 'NeuerName') |
Keine Ahnung allerdings wie das mit TXMLDocument konkret geht.
Ist das übrigens Absicht, dass String-Werte dort doppelt gequoted werden?
Viele Grüße,
Martok
huhn - Mi 28.08.13 20:39
ich benutze Lazarus^^ da ist manches komplizierter aber genau sowas hab ich gesucht danke
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!