Aktuelle Zeit: 03.07.2020 15:57

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Forum gesperrt Dieses Thema ist gesperrt. Sie können keine Beiträge editieren oder weitere Antworten erstellen.  [ 25 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: PB4.1 Beta erste XML Beispiele/Tests
BeitragVerfasst: 03.06.2007 10:10 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Ich hab diesen Thread mal eröffnent, damit hier erste Beispiele/Tipps usw.
für die neue XML Lib gepostet werden. Im engl. Forum gibts auch schon
erste Beispiele: http://www.purebasic.fr/english/viewtopic.php?t=27392

Ich mach dann auch gleich den Anfang (meine XML-Kenntnisse sind etwas unter #NULL :wink: )

Code:
EnableExplicit

Define.s XML
Define.l xmldoc, *node

XML = "<adressen>"
XML + " <adresse>"
XML + "  <vorname>Peter</vorname>"
XML + "  <nachname>Parker</nachname>"
XML + " </adresse>"
XML + " <adresse>"
XML + "  <vorname>Bruce</vorname>"
XML + "  <nachname>Wayne</nachname>"
XML + " </adresse>"
XML + " <adresse>"
XML + "  <vorname>Clark</vorname>"
XML + "  <nachname>Kent</nachname>"
XML + " </adresse>"
XML + "</adressen>"

Procedure ExamineXML(*node)
; diese Procedure geht rekursive alle Nodes durch
; und meldet alle gefundenen Personen ;)
  Protected I.l, *child, *new
  Protected NodeName.s, vorname.s, nachname.s
  For I = 1 To XMLChildCount(*node)
    *child = ChildXMLNode(*node, I)
    NodeName = GetXMLNodeName(*child)
    If NodeName = "vorname"
      vorname = GetXMLNodeText(*child)
      *new = NextXMLNode(*child)
      NodeName = GetXMLNodeName(*new)
      If NodeName = "nachname"
        nachname = GetXMLNodeText(*new)
        MessageRequester("Gefunden:", vorname + " " + nachname, #MB_ICONINFORMATION)
        vorname = "" : nachname = ""
      EndIf
    EndIf
    ExamineXML(*child)
  Next
EndProcedure

xmldoc = CatchXML(#PB_Any, @XML, Len(XML))

If XMLStatus(xmldoc) = #PB_XML_Success
  *node = RootXMLNode(xmldoc)
  ExamineXML(*node)
EndIf
FreeXML(xmldoc) 

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: PB4.1 Beta erste XML Beispiele/Tests
BeitragVerfasst: 03.06.2007 14:30 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Bei bekannter XML-Struktur kann man auch direkt auf die entsprechenden
Knoten springen. Bei dem Expat-Parser von PB muss man den Nodepath
lediglich mit einem Nodezähler versehen (es gibt hier -- anders als bei
MSXML -- anscheinend keine NodeList, die als Ergebnis von SelectNodes
zurückgeliefert wird.). Durchläuft man eine simple Repeat - ForEver -
Schleife mit einem entsprechendem Break-Kriterium, muss man hier nicht
mit einer Rekursion arbeiten:

Code:
Define.s XML
Define.l xmldoc, *node
Define.l NodeListCounter

XML = "<adressen>"
XML + " <adresse>"
XML + "  <vorname>Peter</vorname>"
XML + "  <nachname>Parker</nachname>"
XML + " </adresse>"
XML + " <adresse>"
XML + "  <vorname>Bruce</vorname>"
XML + "  <nachname>Wayne</nachname>"
XML + " </adresse>"
XML + " <adresse>"
XML + "  <vorname>Clark</vorname>"
XML + "  <nachname>Kent</nachname>"
XML + " </adresse>"
XML + "</adressen>"

xmldoc = CatchXML(#PB_Any, @XML, Len(XML))

If XMLStatus(xmldoc) = #PB_XML_Success
 
  *node = RootXMLNode(xmldoc)
 
  Repeat
   
    NodeListCounter + 1
   
    *child = XMLNodeFromPath(*node, "adressen/adresse[" + Str(NodeListCounter) + "]")
   
    If *child = 0 : Break : EndIf
   
    Debug "Vorname: "  + GetXMLNodeText(XMLNodeFromPath(*child, "vorname"))
    Debug "Nachname: " + GetXMLNodeText(XMLNodeFromPath(*child, "nachname"))
    Debug "---"
   
  ForEver
 
Else
  MessageRequester("", XMLError(xmldoc))
EndIf

FreeXML(xmldoc)

_________________
Schrödingers Smiley :):


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 03.06.2007 14:39 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Ich hab ja auch in der Richtung experimentiert, habs aber nicht
gerafft weil mir der letzte Teil mit den eckigen Klammern nicht bekannt war:
Code:
*child = XMLNodeFromPath(*node, "adressen/adresse[" + Str(NodeListCounter) + "]")

Danke Dir erstmal für Dein Beispiel und dann mal abwarten was
noch alles kommt :wink:

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 03.06.2007 14:49 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
ts-soft hat geschrieben:
Ich hab ja auch in der Richtung experimentiert, habs aber nicht
gerafft weil mir der letzte Teil mit den eckigen Klammern nicht bekannt war

mir ging das ähnlich, weil ich bisher nur die Lösung mit SelectNodes() von
MSXML kannte.

An dieser Stelle sei noch angemerkt, dass
Code:
/adressen/adresse

mit
Code:
/adressen/adresse[1]

gleichzusetzen ist.

Grüße ... Kiffi

_________________
Schrödingers Smiley :):


Nach oben
 Profil  
 
 Betreff des Beitrags: GetXMLAttribute() funktioniert nicht?
BeitragVerfasst: 04.06.2007 14:12 
Offline
Benutzeravatar

Registriert: 30.12.2004 13:45
Wohnort: Berlin
Hallo Leute!

Beim ausprobieren der XML-Prozeduren ist es mir leider nicht gelungen auf Attribute zuzugreifen:

Code:
Define.s XML
Define.l xmlDoc, *rootNode, *childNode

XML = "<root rootAttribute='value'>"
XML + " <child childAttribute='value' />"
XML + "</root>"

xmldoc = CatchXML(#PB_Any, @XML, Len(XML))

If XMLStatus(xmldoc) = #PB_XML_Success
 
  *rootNode = ChildXMLNode( RootXMLNode(xmldoc) )
 
  Debug GetXMLNodeName( *rootNode )
  Debug GetXMLAttribute( *rootNode, "rootAttribute" )
 
  *childNode = ChildXMLNode( *rootNode )
 
  Debug GetXMLNodeName( *childNode )
  Debug GetXMLAttribute( *childNode, "childAttribute" )
 
EndIf

Die Attributewerte werde in meinem Test leider nicht ausgegeben.

Mache ich einen Fehler? Oder geht es nicht? :mrgreen:

*update*
Sorry, hab im englischen Forum was gefunden: http://www.purebasic.fr/english/viewtop ... lattribute Ist wohl ein Bug?

_________________
Blog | derRaab(); - Flash Platform Developer | XING | Joykey - Joystickevent to Keyevent | electronicSat - elektronische Musik | MySpace


Zuletzt geändert von derRaab am 04.06.2007 14:17, insgesamt 1-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 04.06.2007 14:17 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Das scheint ein Bug zu sein, wurde bereits im engl. Forum gemeldet.
Hier ein workaround:
Code:
Procedure.s GetXMLAttribute_(*Node, Attribute$)
  If XMLNodeType(*Node) = #PB_XML_Normal
    ExamineXMLAttributes(*node)
    While NextXMLAttribute(*node)
      If XMLAttributeName(*node) = Attribute$
        ProcedureReturn XMLAttributeValue(*node)
      EndIf
    Wend
  EndIf
EndProcedure
Macro GetXMLAttribute(Node, Attribute)
  GetXMLAttribute_(Node, Attribute)
EndMacro

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 04.06.2007 14:18 
Offline
Benutzeravatar

Registriert: 30.12.2004 13:45
Wohnort: Berlin
Ja, sorry... :D

UND DANKE NATÜRLICH!!!

_________________
Blog | derRaab(); - Flash Platform Developer | XING | Joykey - Joystickevent to Keyevent | electronicSat - elektronische Musik | MySpace


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 09.06.2007 16:37 
Offline
Benutzeravatar

Registriert: 02.09.2004 17:34
Hallo!

Habe mich bis jetzt immer gewehrt mich mit xml zu beschäftigen, war für
mich immer son "internetzeugs". Habe aber jetzt mal bei Wikipedia
nachgelesen, ist aber sehr technisch gehalten.

Mir kommt das ganze irgendwie als Ersatz für ini's vor, womit ich sicherlich
falsch liege! Kann mir jemand mal 3 richtig gute Gründe nennen die es mir
schmackhaft machen könnten, meine Daten in XML zu speichern?

_________________
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... :lol:


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 09.06.2007 16:48 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Ini sind beschränkt auf 64 KB (nicht Preferences!)
Ini beschränkt sich auf darstellbare Zeichen, in XML kann man alles in
x-beliebiger Grösse packen, wenn man sich an die Regeln hält :wink:
XML können gestreamt werden, man ist also unabhängiger vom verfügbarem
Speicher.
XML wird oft auch als Datenbank verwendet, moderne Officeprogramme
verwenden XML zur Speicherung ihrer Dokumente.
Plattformunabhängig.
Schnell.

Nachteil:
- Exe wird duch hinzulinken der XML lib grösser
- Umgang mit XML muß erstmal verstanden werden (ich übe schon :wink: )

Meine XML-Noob Meinung :mrgreen:

Dies ist vielleicht interessant:
http://www.purebasic.fr/english/viewtop ... 363#198363

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 09.06.2007 16:57 
Offline
Benutzeravatar

Registriert: 28.07.2005 12:39
Fuer einfache Sachen ist die PreferenceLib immer noch besser.
Wer allerdings schon anfaengt seine Schluessel mit Zahlen zu
versehen (key1,key2 usw...) sollte sich xml zumindest einmal
ansehen.

_________________
Suche


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Forum gesperrt Dieses Thema ist gesperrt. Sie können keine Beiträge editieren oder weitere Antworten erstellen.  [ 25 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye