XMLNodeFromID schlägt fehl

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

XMLNodeFromID schlägt fehl

Beitrag von Fluid Byte »

Code: Alles auswählen

XML$ = "<?xml version='1.0'?>"
XML$ + "<root>"
XML$ + "  <item id='1'>Wheelchair</item>"
XML$ + "  <item id='2'>Skyscraper</item>"
XML$ + "  <item id='3'>Computer</item>"
XML$ + "</root>"

CatchXML(0,@XML$,StringByteLength(XML$))

Debug XMLNodeFromID(0,"1")
Debug XMLNodeFromID(0,"2")
Debug XMLNodeFromID(0,"3")
Ohne Unicode kompiliert gibt's 'nen IMA und mit sind die letzten beiden Debugs NULL.

Wasn' da los?
Zuletzt geändert von Fluid Byte am 09.03.2009 17:08, insgesamt 2-mal geändert.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Little John

Beitrag von Little John »

Hallo,

ich kann das Problem bestätigen (PB 4.30 unter Ubuntu 8.10) ... keine Ahnung woran es liegt.
Der unten stehende Code funktioniert hier. Vielleicht hlft das dabei, die Ursache näher einzugrenzen.

Gruß, Little John

PS: Ich denke, damit Dein Code unter Unicode richtig funktioniert sollte es statt

Code: Alles auswählen

CatchXML(0, @XML$, Len(XML$))
heißen

Code: Alles auswählen

CatchXML(0, @XML$, StringByteLength(XML$))
aber das ist nicht das Hauptproblem.

Code: Alles auswählen

EnableExplicit

Define Xml, Root, Main, Item

Xml = CreateXML(#PB_Any)
Root = RootXMLNode(Xml)
Main = CreateXMLNode(Root)
SetXMLNodeName(Main, "root")

Item = CreateXMLNode(Main)
SetXMLNodeName(Item, "item")
SetXMLNodeText(Item, "Cat")
SetXMLAttribute(Item, "id", "1")

Item = CreateXMLNode(Main)
SetXMLNodeName(Item, "item")
SetXMLNodeText(Item, "Dog")
SetXMLAttribute(Item, "id", "2")

Item = CreateXMLNode(Main)
SetXMLNodeName(Item, "item")
SetXMLNodeText(Item, "Horse")
SetXMLAttribute(Item, "id", "3")

Debug GetXMLNodeText(XMLNodeFromID(Xml, "1"))
Debug GetXMLNodeText(XMLNodeFromID(Xml, "2"))
Debug GetXMLNodeText(XMLNodeFromID(Xml, "3"))
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Hääääääähhh?! :freak:

Gestern ging es noch wenn man auf Unicode umgestellt hat. Nun aber gibts mit jedem Durchlauf einen IMA. Ich denke das ist auf jedenfall ein Bug den das gleiche Dokument mit PB erstellt lässt sich ohne Probleme auslesen.

Zumindest geht es wenn man XMLNodeFromPath() benutzt:

Code: Alles auswählen

XML$ = "<?xml version='1.0'?>"
XML$ + "<root>"
XML$ + "  <item id='1'>Wheelchair</item>"
XML$ + "  <item id='2'>Skyscraper</item>"
XML$ + "  <item id='3'>Computer</item>"
XML$ + "</root>"

CatchXML(0,@XML$,StringByteLength(XML$))

Debug GetXMLNodeText(XMLNodeFromPath(MainXMLNode(0),"*[1]"))
Debug GetXMLNodeText(XMLNodeFromPath(MainXMLNode(0),"*[2]"))
Debug GetXMLNodeText(XMLNodeFromPath(MainXMLNode(0),"*[3]")
Windows 10 Pro, 64-Bit / Outtakes | Derek
Antworten