AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi XMLNode innerxml - Markup zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

XMLNode innerxml - Markup zuweisen

Ein Thema von s-w · begonnen am 11. Aug 2008 · letzter Beitrag vom 11. Aug 2008
Antwort Antwort
s-w

Registriert seit: 7. Aug 2008
4 Beiträge
 
#1

XMLNode innerxml - Markup zuweisen

  Alt 11. Aug 2008, 14:54
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:
<?xml version="1.0" encoding="utf-8"?>
<Gebaeude>

</Gebaeude>
Nach dem Ändern soll das so aussehen
Delphi-Quellcode:
<?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>
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#?

Danke
Gruß
Sven
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: XMLNode innerxml - Markup zuweisen

  Alt 11. Aug 2008, 15:53
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:
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;
Freundliche Grüße
  Mit Zitat antworten Zitat
s-w

Registriert seit: 7. Aug 2008
4 Beiträge
 
#3

Re: XMLNode innerxml - Markup zuweisen

  Alt 11. Aug 2008, 16:04
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.

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>" Muss ich den String händich zerflücken und mir die Nodes und Attribute incl. Values erstellen?

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: XMLNode innerxml - Markup zuweisen

  Alt 11. Aug 2008, 16:17
das einzige was dir fehlt ist doch der header und der footer von xml. pack das doch einfach dazu? oder variiert das?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#5

Re: XMLNode innerxml - Markup zuweisen

  Alt 11. Aug 2008, 16:47
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>'
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: XMLNode innerxml - Markup zuweisen

  Alt 11. Aug 2008, 17:43
Hallo Sven,

Zitat von s-w:
... 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. ...
ich hatte vorausgesetzt, dass du schon weißt, wie man einen markup string in ein Dokument verwandelt. Das Beispiel im Anhang zeigt dir, wie du das stilecht hinbekommst.

Freundliche Grüße
Angehängte Dateien
Dateityp: zip demo_152.zip (2,1 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz