ExtractXMLStructure()

Für allgemeine Fragen zur Programmierung mit PureBasic.
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

ExtractXMLStructure()

Beitrag von Andesdaf »

Moin, ich bekomme ExtractXMLStructure unter PB 5.31 x86 einfach nicht zum Laufen.

Code: Alles auswählen

Structure LENEX_AGEDATE
  type.s
  value.s
EndStructure

Procedure LENEX_Read(pzText.s)
  Protected sLENEX.LENEX_AGEDATE
  Protected *Node
  
  piXML = ParseXML(#PB_Any, pzText)
  If piXML And XMLStatus(piXML) = #PB_XML_Success
    *Node = MainXMLNode(piXML)
    *Node = XMLNodeFromPath(*Node, "/LENEX/MEETS/MEET[1]/AGEDATE")
    ExtractXMLStructure(*Node, @sLENEX, LENEX_AGEDATE, #PB_XML_NoCase)
  EndIf
  
  Debug sLENEX\type
EndProcedure

LENEX_Read("<LENEX version='3.0'><CONSTRUCTOR name='SPLASH Meet Manager 2007' registration='Splash Software' version='DEBUG Build'><CONTACT name='GeoLogix AG' street='Muristrasse 60' city='Bern' zip='3006' country='CH' phone='+41 31 356 80 56' fax='+41 31 356 80 81' email='info@splash-software.ch' internet='http://www.splash-software.ch' />" + 
           "</CONSTRUCTOR><MEETS><MEET city='Nottwil' name='Schweizerische Masters Meisterschaften' name.en='Swiss Masters Championships' course='SCM' deadline='2009-09-07' nation='SUI' organizer='Schwimmverein Emmen' state='LU' timing='AUTOMATIC' type='SUI.MCS'><AGEDATE value='2009-09-27' type='YEAR' /></MEET></MEETS></LENEX>")
formatiert sieht der XML-Block so aus:

Code: Alles auswählen

<LENEX version="3.0">
  <CONSTRUCTOR name="SPLASH Meet Manager 2007" registration="Splash Software" version="DEBUG Build">
    <CONTACT name="GeoLogix AG" street="Muristrasse 60" city="Bern" zip="3006" country="CH" phone="+41 31 356 80 56" fax="+41 31 356 80 81" email="info@splash-software.ch" internet="http://www.splash-software.ch" />
  </CONSTRUCTOR>
  <MEETS>
    <MEET city="Nottwil" name="Schweizerische Masters Meisterschaften" name.en="Swiss Masters Championships" course="SCM" deadline="2009-09-07" nation="SUI" organizer="Schwimmverein Emmen" state="LU" timing="AUTOMATIC" type="SUI.MCS">
      <AGEDATE value="2009-09-27" type="YEAR" />
    </MEET>
  </MEETS>
</LENEX>
Wo liegt mein Denkfehler?
Win11 x64 | PB 6.20
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: ExtractXMLStructure()

Beitrag von NicTheQuick »

'ExtractXMLStructure()' funktioniert nicht mit Attributen. Nur mit Knoten, die innerhalb des angegebenen Knotens liegen. Im Beispiel sieht man das gut:

Code: Alles auswählen

Structure Person
	Name$
	Age.l
EndStructure

Xml$ = "<Person><Name>John Smith</Name><Age>42</Age></Person>"

If ParseXML(0, Xml$) And XMLStatus(0) = #PB_XML_Success
	Define P.Person
	ExtractXMLStructure(MainXMLNode(0), @P, Person)
	
	Debug P\Name$
	Debug P\Age
Else
	Debug XMLError(0)
EndIf
"Name" und "Age" sind weitere Knoten innerhalb von "Person" und keine Attribute vom "Person"-Knoten.
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: ExtractXMLStructure()

Beitrag von Andesdaf »

danke, ok, das ist ja blöd für mich... also alles per Hand einlesen :lol:
Win11 x64 | PB 6.20
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: ExtractXMLStructure()

Beitrag von NicTheQuick »

Schreib's auf die Wishlist. :)
Antworten