PureBasic - XML

Einleitung

Die Extensible Markup Language (englisch für "erweiterbare Auszeichnungssprache"), abgekürzt XML, ist eine Auszeichnungssprache zur Darstellung hierarchisch strukturierter Daten in Form von Textdateien.

Die XML Bibliothek bietet eine Reihe an Funktionen, um zu Anwendungen leicht das Parsen (syntaktische Analyse) und die Fähigkeit zum Erstellen von XML hinzuzufügen. Sie basiert auf dem expat XML Parser, welcher unter der MIT Lizenz (kann hier eingesehen werden) lizenziert ist. expat wird in vielen Projekten (wie Mozilla oder Perl) verwendet. Er ist sehr stabil und sehr schnell.

Wichtig: Die expat Lizenz erfordert, dass eine Copyright-Notiz und der Lizenz-Text selbst in jede Software integriert werden, welche den Parser beinhalten. Wenn also die Bibliothek (oder der API-Import) in einer Software verwendet werden, welche öffentlich zugänglich gemacht wird, dann muss die oben verlinkte Lizenz in die Software integriert werden.

Die expat-Funktionen können wie andere API-Funktionen auch direkt von PureBasic aufgerufen werden. Allerdings müssen Sie - zusätzlich zum abschließenden Unterstrich - am Anfang des Funktionsnamens ein "pb_" hinzufügen. Dies ermöglicht die Nutzung von expat-Funktionen, die nicht direkt von dieser Bibliothek bereitgestellt werden.
Die in expat.h definierten Konstanten und Strukturen sind direkt in PureBasic verfügbar. Für detaillierte Informationen über die expat Funktionen schauen Sie in die Dokumentation, welche im Download-Paket auf http://expat.sourceforge.net/ angeboten wird.

Diese Bibliothek bietet teilweise Unterstützung von "Document Type Definitions" (DTD) und "Namespaces" (Namensräume). Das Ziel besteht darin, den Befehlssatz sehr einfach zu halten, während diese Bibliothek dennoch mit allen XML-fähigen Dokumenten umgehen kann.

Der expat Parser (syntaktischer Analysierer) ist ein "non-validating" Parser. Dies bedeutet, er überprüft die geparsten Dokumente auf Fehler im "Markup" (ein Dokument muss entsprechend der XML-Spezifikation aufgebaut sein), aber er überprüft das Dokument nicht gegenüber einer DTD. Beim Parsen eines Dokuments platziert diese Bibliothek DTDs innerhalb eines speziellen Knotens (Node) im XML-Baum mit dem Typ #PB_XML_DTD. Der Inhalt dieses Knotens ist der volle DOCTYPE Tag. Auf diesem Weg kann einfach auf diesen zugegriffen und er auch manipuliert werden, aber es ist auch in Ordnung ihn zu ignorieren, wenn diese Information nicht benötigt wird. Der Tag wird beim Exportieren/Speichern des Dokuments einfach wieder zurückgeschrieben.

"Namespaces" (Namensräume) werden beim Parsen eines Dokuments nicht aufgelöst. Dies bedeutet, dass in einem Dokument, welches Namespaces verwendet, auf die Namespace Deklarationen wie normale Knoten-Attribute zugegriffen werden kann, und Knoten-/Attribut-Namen - welche Namespaces verwenden - als "namespace:tagname"# sichtbar werden. Dies ermöglicht das Lesen und auch das Zurückschreiben eines Dokuments (welches Namespaces verwendet) wie jedes andere Dokument, ohne dessen Struktur zu zerstören. Um das Arbeiten mit Namespaces leichter zu machen, werden die Funktionen ResolveXMLNodeName() und ResolveXMLAttributeName() bereitgestellt, um Namen innerhalb von Dokumenten mit Namespaces aufzulösen.

Der PureBasic Debugger bietet die Möglichkeit, #XML Objekte während der Laufzeit mit dem Library Anzeiger zu untersuchen.

Die offizielle Spezifikation von XML und XML Namespaces des W3C finden Sie hier:
XML Spezifikation
XML Namespaces
Verschiedene Übersetzungen von XML relevanten Dokumenten

Auch der Wikipedia Artikel über XML bietet einen guten Ausgangspunkt, für alle Leute, welche neu bei XML sind.

Befehlsübersicht

CatchXML
ChildXMLNode
ComposeXML
CopyXMLNode
CreateXML
CreateXMLNode
DeleteXMLNode
ExamineXMLAttributes
ExportXML
ExportXMLSize
ExtractXMLArray
ExtractXMLList
ExtractXMLMap
ExtractXMLStructure
FormatXML
FreeXML
GetXMLAttribute
GetXMLEncoding
GetXMLNodeName
GetXMLNodeOffset
GetXMLNodeText
GetXMLStandalone
InsertXMLArray
InsertXMLList
InsertXMLMap
InsertXMLStructure
IsXML
LoadXML
MainXMLNode
MoveXMLNode
NextXMLAttribute
NextXMLNode
ParentXMLNode
ParseXML
PreviousXMLNode
RemoveXMLAttribute
ResolveXMLAttributeName
ResolveXMLNodeName
RootXMLNode
SaveXML
SetXMLAttribute
SetXMLEncoding
SetXMLNodeName
SetXMLNodeOffset
SetXMLNodeText
SetXMLStandalone
XMLAttributeName
XMLAttributeValue
XMLChildCount
XMLError
XMLErrorLine
XMLErrorPosition
XMLNodeFromID
XMLNodeFromPath
XMLNodePath
XMLNodeType
XMLStatus

Beispiel

Xml.pb
Xml_Expat_API.pb

Unterstützte OS

Alle

Referenz-Handbuch - Inhaltsverzeichnis