AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XML Node.Text liefert keinen Wert

Ein Thema von sh17 · begonnen am 26. Apr 2018 · letzter Beitrag vom 11. Jun 2018
Antwort Antwort
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#1

XML Node.Text liefert keinen Wert

  Alt 26. Apr 2018, 10:04
Ich dachte ich wollte es mal "richtig" machen und das XML-Binding von Delphi verwenden.

Nun hab ich das Problem nach dem Einlesen einer XML-Datei, das ich auf die Inhalte von Knoten nicht über ihren Namen zugreifen kann, also die Inhalte sind leer.

Ich fang mal einfach an:

Code:
ShowMessage(xml.ChildNodes['HeaderExchangedDocument'].ChildNodes['ID'].Text);
So hätte ich es gern, allerdings ist Text leer (so arbeitet auch das Binding)

wenn ich mit einer Schleife über die Kinder von HeaderExchangedDocument gehe
klappt es

Code:
for l := 0 to xml.ChildNodes['HeaderExchangedDocument'].ChildNodes.Count-1 do
      if xml.ChildNodes['HeaderExchangedDocument'].ChildNodes[l].IsTextElement then
      begin
        ShowMessage(xml.ChildNodes['HeaderExchangedDocument'].ChildNodes[l].Text);
        ShowMessage(xml.ChildNodes['HeaderExchangedDocument'].ChildNodes[l].NodeName);
end;
mach ich was falsch?

hier mal der Anfang der XML-Datei

Code:
<?xml version="1.0" encoding="UTF-8"?>
<rsm:CrossIndustryDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15">
   <rsm:HeaderExchangedDocument>
      <ram:ID>RK21012345</ram:ID>
      ....
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: XML Node.Text liefert keinen Wert

  Alt 26. Apr 2018, 10:29
ok, scheint am Namespace zu liegen, nur wie geht es richtig?
Sven Harazim
--
  Mit Zitat antworten Zitat
michaelg

Registriert seit: 20. Apr 2008
87 Beiträge
 
#3

AW: XML Node.Text liefert keinen Wert

  Alt 2. Mai 2018, 13:27
Hallo Sven,

ich sitze gerade am selben Thema mit ZUGFeRD. Ich wollte allerdings erstmal die ZUGfERD-Invoice.xml für Rechnungsausgänge erstellen. Das eingelese Schema über XML-Datenanbindung variiert etwas von dem, was die Beispieldateien hergeben. So sind in den Beispieldateien immer die Prefixe xmlns, rsm, ram, udt,... mit drin. Erzeugt man eine Datei mit der Schemaanbindung bekomme ich die nicht. Weiß auch nicht, was man wie einstellen muss, damit die auch geschrieben werden. Das wäre meine Frage, und natürlich, ob das zwingend notwendig ist, um eine gültige Datei zu bekommen.

Vielleicht ist meine Frage gleichzeitig Deine Antwort, Du hast 'ID' abgefragt, vielleicht musst Du das Prefix mitnehmen und "ram:ID" abfragen, damit Du das Node bekommst.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: XML Node.Text liefert keinen Wert

  Alt 2. Mai 2018, 13:39
Es gibt auch noch

xml.ChildNodes.FindNode(<name>, <namespace>)

Genau dein Problem hatte ich nämlich erst letzte Woche
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: XML Node.Text liefert keinen Wert

  Alt 2. Mai 2018, 18:09
schon klar mit dem Parameter bei FindNode. Nur so funktioniert xml.ChildNodes['HeaderExchangedDocument'].ChildNodes['ID'].Text nicht.

Ich werfe das komplette Bindung weg und mache nun alles selbst. Dauert etwas

Das ganze ist dann übrigens unter

https://github.com/LandrixSoftware/ZUGFeRD-for-Delphi

zu finden. Ich werde die Quellen immer aktuallisieren.
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: XML Node.Text liefert keinen Wert

  Alt 2. Mai 2018, 19:04
schon klar mit dem Parameter bei FindNode. Nur so funktioniert xml.ChildNodes['HeaderExchangedDocument'].ChildNodes['ID'].Text nicht.
Hä wieso das nicht?
xml.ChildNodes.FindNode('HeaderExchangedDocument', 'rsm').ChildNodes.FindNode('ID', 'ram').Text
müsste doch ohne Probleme gehen oder nicht?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
michaelg

Registriert seit: 20. Apr 2008
87 Beiträge
 
#7

AW: XML Node.Text liefert keinen Wert

  Alt 7. Jun 2018, 12:30
Hi,

ich muss noch mal auf die Sache mit den Prefixen zurückkommen. Ich hab mich die letzten Wochen mit etwas anderem beschäftigt und wollte nun weitermachen mit ZUGFerd.

Wenn man die XML-Shemata von ZUGFerd einliest in Delphi bekomme ich zwar die entsprechenden Interface-Deklarationen und kann hier auch alles nutzen. Beim Schreiben der XML-Datei bekomme ich aber diese ganzen Prefixe/Namespaces "ram:" oder "udt:" usw. nicht mit abgespeichert. So wie ich das verstanden habe, werden die aber benötigt, um eine valide Datei zu erzeugen.

Mein Kollege meinte, das wäre ein Fehler von Delphi, da das Schemata aus drei Dateien besteht und Delphi es nicht hinbekommt, das so zu mixen, dass alle Typen und Namespaces mit in die erstellte Unit einfliessen.

Was meint Ihr? Hat das jemand hinbekommen oder haben das alle dann doch zu Fuß gemacht?
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: XML Node.Text liefert keinen Wert

  Alt 7. Jun 2018, 13:24
ich baue die XML jetzt von Hand. Selbst wenn die Schemata in einer Datei liegen würden, wäre es nicht möglich. Siehe auch obiges Git-Repo
Sven Harazim
--
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: XML Node.Text liefert keinen Wert

  Alt 11. Jun 2018, 10:10
Ich habe die ZugFerd Implementation auch "per Hand" gemacht...

Ciao
Stefan
  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 16:38 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