Seite 1 von 1

XMLNodeFromID schlägt fehl

Verfasst: 08.03.2009 19:33
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?

Verfasst: 08.03.2009 21:12
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"))

Verfasst: 09.03.2009 17:14
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]")