![]() |
XMLNode innerxml - Markup zuweisen
Hallo,
gibt es eine Möglichkeit einem XMLNode sowas wie dem InnerXml zu setzen? Ich benutze MSXML2_TLB. In C# gibt es da node.innerxml wo man dem knoten xml strukturen zuweisen kann, der dann auch über den DOM ansprechen angesprochen werden kann. Es gibt leider nur Node.XML, aber diese Property ist enthält keine Möglichkeit XML zuzuweisen. Hier ein kleines Beispiel, das verdeutlicht was ich machen möchte
Delphi-Quellcode:
Nach dem Ändern soll das so aussehen
<?xml version="1.0" encoding="utf-8"?>
<Gebaeude> </Gebaeude>
Delphi-Quellcode:
Das Problem ist, das mit das ganze als string vorliegt, und ich diesen erst per hand auseinander nehmen müsste, um Nodes mit Attributen zu erzeugen, die ich dem Node "Gebaeude" anhängen könnte. Gibt es eine andere Möglichkeit - sprich sowas wie "innerxml" in C#?
<?xml version="1.0" encoding="utf-8"?>
<Gebaeude> <Wohn-Haus> <StandardHaus id="1" attr1="value1" attr2="value2" ..../> <StandardHaus id="2" attr1="value1" attr2="value2" ..../> </Wohn-Haus> <Fabrik> <Metallfabrik id="1" attr1="value1" attr2="value2" ..../> </Fabrik> </Gebaeude> Danke Gruß Sven |
Re: XMLNode innerxml - Markup zuweisen
Herzlich willkommen in der Delphi-PRAXiS, Sven.
Leider hast du mit MSXML2 nur eine Möglichkeit markup zu parsen. Es ist aber nicht so sehr ein Unterschied zwischen C# und Delphi, als vielmehr zwischen .NET und Win32. Unter Win32 mit Version 4 des XML-Parsers würde ich etwa so vorgehen:
Delphi-Quellcode:
Freundliche Grüße
function JoinDocuments(masterDoc, doc: IXMLDOMDocument2): Boolean;
var i: Integer; begin Result := masterDoc.documentElement.tagName = doc.documentElement.tagName; if Result then for i := 0 to Pred(doc.childNodes.length) do masterDoc.documentElement.appendChild(doc.documentElement.childNodes.item[i].cloneNode(True)); end; |
Re: XMLNode innerxml - Markup zuweisen
Hi
danke schonmal für die Antwort. Aber so wie ich das sehe, bist du davon ausgegangen das die 2. XML Struktur auch vorliegt. Ich habe aber das, was an den Knoten angehängt werden soll, nur als String vorliegen.
Delphi-Quellcode:
Muss ich den String händich zerflücken und mir die Nodes und Attribute incl. Values erstellen?
strTmpm := "<Wohn-Haus><StandardHaus id="1" attr1="value1" attr2="value2" ..../><StandardHaus id="2" attr1="value1" attr2="value2" ..../></Wohn-Haus><Fabrik><Metallfabrik id="1" attr1="value1" attr2="value2" ..../></Fabrik>"
Gruß |
Re: XMLNode innerxml - Markup zuweisen
das einzige was dir fehlt ist doch der header und der footer von xml. pack das doch einfach dazu? oder variiert das?
|
Re: XMLNode innerxml - Markup zuweisen
DGL-luke meint, erstell dir eine neue temporäre XML-Komponente, pack dort deinen String rein und kopier dir von dort den Inhalt (z.B. wie oben beschrieben).
und eventuell noch Header und Footer dazu
Code:
'<?xml version="1.0" encoding="utf-8"?><Gebaeude>' + S + '</Gebaeude>'
|
Re: XMLNode innerxml - Markup zuweisen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Sven,
Zitat:
Freundliche Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz