Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 

Re: Attribute die ich gar nicht explizit erstellt habe

  Alt 26. Mai 2007, 14:00
Hallo Raphael,

die Leerattribute (xmlns="") sind eigentlich ganz einfach zu erklären: Du verwendest Techniken zum Aufbau deines XML-Dokuments, die ab CoXMLDOMDocument40 nur beim Arbeiten ohne Namespaces funktionieren. Sobald du mit Namespaces arbeitest musst du anders vorgehen. Die Methode CreateElement() erzeugt ein neues Element grundsätzlich ohne Namespace, also auch nicht im Default Namespace. Um ein Element im Default (oder einem beliebigen) NameSpace zu erzeugen musst du die Methode CreateNode() verwenden:

Delphi-Quellcode:
var
  nsDef: string;
  nPackage, nSender, nUser: IXMLDOMNode;
begin
  nsDef := 'http://innosolv.ch/namespace/isag';
  // ...
  nPackage := root.appendChild(xmlDoc.createNode(NODE_ELEMENT, 'package', nsDef));
  nSender := nPackage.appendChild(xmlDoc.createNode(NODE_ELEMENT, 'sender', nsDef));
  nUser := nSender.appendChild(xmlDoc.createElement('user'));
  // ...
end;
Bei der Beschaffung von Knotenreferenzen über XPATH wirst du im Zusammenhang mit dem Default Namespace über ein weiteres Problem stolpern, das an anderer Stelle bereits beleuchtet wurde. Ich würde in deinem Fall die eingefügten Knoten zwischenspeichern, wenn du sie später noch mal brauchst.

Grüße vom marabu
  Mit Zitat antworten Zitat