Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Fehler beim XML Parsen (https://www.delphipraxis.net/197999-fehler-beim-xml-parsen.html)

Broucker 25. Sep 2018 19:05

Fehler beim XML Parsen
 
Hallo,
vorweg - ich habe bereits einiges mit XML Dateien und auch mit dem Datenbindungsexperten gemacht.
War aufgrund einfacher Strukturen soweit gut machbar - nun bekomme ich (über ein Webservice)
xml Dateien mit Rechtsinhalten die vereinfacht so aussehen:

<liste>
<ziffernliste ebene="1">
<listelem ct="text">
<symbol stellen="2">6.</symbol>„Industriebatterien“ Batterien oder Akkumulatoren, die für industrielle oder gewerbliche Zwecke...
</listelem>
<listelem ct="text">
<symbol stellen="2">7.</symbol>„Altbatterien“ Batterien oder Akkumulatoren, die gemäß §*2 AWG*2002 als Abfall gelten;
</listelem>
</ziffernliste>
<literaliste ebene="2">
<listelem ct="text">
<symbol stellen="2">a)</symbol>die gekapselt sind und
</listelem>
...
</literaliste>
...
<schluss typ="Ziff" ct="text">bei denen Gerätealtbatterien abgegeben werden können;</schluss>
</liste>

Ich kann gut auf die Attribute (zB. ct="text") zugreifen (auslesen reicht)
ebenso auf den Text in <schluss> ("bei denen Gerätealtbatterien....."), auch die NodeNames etc...

Aber egal ob ich das über die Funkionen der XML-Datenbindung oder direkt (.node[0].Listelem[1].Text)
mache es geht nicht (EXMLDocError -'Element "listelem" enthält keinen einzelnen Textknoten')

Beisiel XML https://www.ris.bka.gv.at/Dokumente/...OR40193256.xml


Ich behirne das jetzt leider nicht mehr ;(

Vielleicht kann mir da jemand von Euch auf die Sprünge helfen
Vielen Vielen Dank!

mjustin 25. Sep 2018 19:20

AW: Fehler beim XML Parsen
 
Die Fehlermeldung "EXMLDocError -'Element "listelem" enthält keinen einzelnen Textknoten'" ist korrekt:

Code:
<listelem ct="text">
  <symbol stellen="2">7.</symbol>&#8222;Altbatterien&#8220; Batterien oder Akkumulatoren, die gemäß §*2 AWG*2002 als Abfall gelten;
</listelem>
listelem hat zwei Childnodes: einen <symbol> Node und einen Textnode. Ich nehme an, mann muss in diesem Fall die Childnodes der Reihe nach abarbeiten und jeweils den Node-Typen darauf prüfen, ob es ein Textnode ist. In diesem Fall würde Childnodes[1] daher den gesuchten Text enthalten.

p.s. allerdings habe ich in der im Link aufrufbaren Beispiel-XML-Datei auch "kompliziertere" Fälle gesehen, bei denen Childnodes[1] nicht zum Ziel führt:

Code:
<listelem ct="text">
  <symbol stellen="2"><b>2.</b></symbol>
  <b>Persönliche und soziale Kompetenz</b>
</listelem>
Hier ist der Text mit <b> formatiert, Childnodes[1] ist daher das b Element, kein Textnode. Der Textnode ist hier der erste Childnode des b Elements.

Broucker 25. Sep 2018 19:37

AW: Fehler beim XML Parsen
 
VIELEN Dank!!
Code:
Ziffernliste[0].Listelem[0].ChildValues[1]
brachte das Ergebnis
:-D


... ich werde morgen das "grosse" XML angehen und hoffe das ich das nun endlich ganz verstanden hab

Danke!

himitsu 25. Sep 2018 21:06

AW: Fehler beim XML Parsen
 
So manche XML-Komponente bietet auch sowas wie InnerText als Property der Nodes, welches den XML-Inhalt dieses Notes enthält.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 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