AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Unterknoten ohne Namespace wird nicht gefunden
Thema durchsuchen
Ansicht
Themen-Optionen

Unterknoten ohne Namespace wird nicht gefunden

Ein Thema von Incocnito · begonnen am 15. Feb 2021 · letzter Beitrag vom 17. Feb 2021
 
Incocnito

Registriert seit: 28. Nov 2016
229 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
 


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 05:47 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