Einzelnen Beitrag anzeigen

Incocnito

Registriert seit: 28. Nov 2016
210 Beiträge
 
#6

AW: Unterknoten ohne Namespace wird nicht gefunden

  Alt 16. Feb 2021, 10:01
Hi Zusammen,

ja x2 macht das hier scheinbar besser.
Musste nur Jedi aus dem Source rauswerfen, da ich in der Firma kein Jedi installiert habe
(und auch nicht einfach installieren darf)
und die erzeugte PAS-Datei noch überarbeiten, da er mit Fehlermeldungen gekommen war.
Ich denke das liegt wohl daran, dass x2utils und die erzeugte Datei von der Version her nicht zusammen passten.
Datumsfelder sind nun tatsächlich vom Typ "DateTime" auch nice.
Es gibt noch viele Dinge die ich mir nun ansehen muss.

etwas ärgerlich, weil ich mit
Delphi-Quellcode:
var
  node : IXmlNode;
const
  sCurrNodeName = 'Person';
begin
  node := ChildNodes.FindNode(sCurrNodeName, '');
  if (node = nil) then
  begin
    node := InternalAddChild(nil, sCurrNodeName, '', -1);
    node.SetAttributeNS('ns', GetNamespaceURI(), NULL);
  end;
  Result := TXMLPerson.CreateHosted(node as TXmlNode);
end;
schon dicht dran war. Nur wenn der Knoten nicht vorhanden war hatte er einen leeren Namespace hinzugefügt.

Was ich nicht verstanden hatte: Es gibt in der erzeugten XML einen Standard-Namespace (finde den in der kompletten
PAS-Datei nicht, wo der gesetzt werden soll), der hier gesetzt werden muss.
Delphi-Quellcode:
var
  node : IXmlNode;
const
  sCurrNodeName = 'Person';
  sNamespaceURI = 'http://www.test.de/versteckter/namespace/v.1.1';
begin
  node := ChildNodes.FindNode(sCurrNodeName, sNamespaceURI);
  if (node = nil) then
  begin
    //node := InternalAddChild(nil, sCurrNodeName, sNamespaceURI, -1);
    node := AddChild(sCurrNodeName, sNamespaceURI);
  end;
  Result := TXMLPerson.CreateHosted(node as TXmlNode);
end;
Damit ginge es dann auch bei mir.

Danke für die Hilfe schonmal. Ich schau mal, ob ich das noch etwas anders schreiben kann.

LG Icocnito

Geändert von Incocnito (16. Feb 2021 um 14:32 Uhr) Grund: AddChild, statt InternalAddChild / Namespace bei FindNode vergessen
  Mit Zitat antworten Zitat