XML-Datei in Treegadget anzeigen {gelöst}
Verfasst: 24.01.2020 17:03
Hallo Allerseits,
ich habe hier einen uralten Source zur Anzeige von XML-Dateiinhalten, der bisher toll gelaufen ist.
Nun werden nicht mehr alle Werte angezeigt
vielleicht liegt´s auch an der XML-Datei (Telefonbuch vonne FritzBox)
Fehler anscheinend bei NextXMLAttribute(*CurrentNode) in Proc FillTree(): hier werden einige Attribute übersprungen.
Kann mir da jemand auf die Sprünge helfen ?
_________________________________
Titel angepasst. -- Andesdaf
ich habe hier einen uralten Source zur Anzeige von XML-Dateiinhalten, der bisher toll gelaufen ist.
Nun werden nicht mehr alle Werte angezeigt
Code: Alles auswählen
Global *MainNode, Event, FileName$, FileRef$, Format, i, Win_B, Win_T, Win_X, Win_Y, WinNr, XML_GadNr, XML_Nr
Procedure FillTree(*CurrentNode, CurrentSublevel)
Protected *ChildNode, Att$, Text$
If XMLNodeType(*CurrentNode) = #PB_XML_Normal
Text$ = GetXMLNodeName(*CurrentNode)
If ExamineXMLAttributes(*CurrentNode)
While NextXMLAttribute(*CurrentNode)
If Att$ = "" : Att$ = " (Attribute: " : EndIf
Att$ + XMLAttributeName(*CurrentNode) + "=" + #DQUOTE$ + XMLAttributeValue(*CurrentNode) + #DQUOTE$ + " "
Wend
EndIf
If Att$>"" : Att$ + ")" : EndIf
AddGadgetItem(XML_GadNr, - 1, Text$ + Att$, 0, CurrentSublevel)
*ChildNode = ChildXMLNode(*CurrentNode)
While * ChildNode <> 0
FillTree(*ChildNode, CurrentSublevel + 1)
*ChildNode = NextXMLNode(*ChildNode)
Wend
EndIf
EndProcedure
FileName$ = ProgramParameter()
If FileSize(FileName$)<10
FileName$ = OpenFileRequester("XML-Datei auswählen", "", "XML-datei|*.XML", 0)
EndIf
If FileName$ = "" : End : EndIf
FileRef$ = #DQUOTE$ + GetFilePart(FileName$) + #DQUOTE$
XML_Nr = ReadFile(#PB_Any, FileName$)
Format = ReadStringFormat(XML_Nr)
CloseFile(XML_Nr)
XML_Nr = LoadXML(#PB_Any, FileName$, Format)
Win_X = 10
Win_Y = 10
Win_B = 600
Win_T = 200
WinNr = OpenWindow(#PB_Any, Win_X, Win_Y, Win_B, Win_T, "Datei " + FileRef$, #PB_Window_SystemMenu|#PB_Window_SizeGadget)
XML_GadNr = TreeGadget(#PB_Any, 0, 0, Win_B, Win_T)
*MainNode = MainXMLNode(XML_Nr)
If *MainNode : FillTree(*MainNode, 0): EndIf
For i = 0 To CountGadgetItems(XML_GadNr) - 1
SetGadgetItemState(XML_GadNr, i, #PB_Tree_Expanded)
Next i
SetGadgetState(XML_GadNr, 0)
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
- <?xml version="1.0" encoding="utf-8"?>
<phonebooks>
<phonebook name="Telefonbuch"><contact><category>0</category><person><realName>ADAC Service</realName></person><telephony
nid="1"><number type="work" prio="1" id="0">08005101112</number></telephony><services /><setup /><features
doorphone="0" /><mod_time>1534939336</mod_time><uniqueid>109</uniqueid></contact><contact><category>0</category><person><realName>Aldi Talk</realName></person><telephony
nid="2"><number type="home" prio="1" id="0">0201 – 22099777</number><number
type="mobile" prio="0" id="1"> 0177-177 1157</number></telephony><services /><setup /><features
doorphone="0" /><mod_time>1508338087</mod_time><uniqueid>23</uniqueid></contact><contact><category /><person><realName>Andy</realName></person><telephony
nid="1"><number type="mobile" vanity="" prio="1" id="0">015738182046</number></telephony><services /><setup><ringTone /></setup><mod_time>1500560453</mod_time><uniqueid>24</uniqueid></contact><contact><category>0</category><person><realName>Angela FN</realName></person><telephony
nid="1"><number type="home" prio="1" id="0">04067999865</number></telephony><services /><setup /><features
doorphone="0" /><mod_time>1519229622</mod_time><uniqueid>25</uniqueid></contact></phonebook>
</phonebooks>
Fehler anscheinend bei NextXMLAttribute(*CurrentNode) in Proc FillTree(): hier werden einige Attribute übersprungen.
Kann mir da jemand auf die Sprünge helfen ?
_________________________________
Titel angepasst. -- Andesdaf