Xavier est une petite bibliothèque XML, orientée objet et multiplateforme qui simplifie le travail avec des fichiers et des flux XML à l'aide de XPath.
Attention: nous sommes encore dans une version alpha très précoce, l'API peut et changera fréquemment. S'il vous plaît, utilisez-le à vos propres risques, jusqu'à ce que nous publions la version 1.0.
Cette API est écrite dans Free Pascal et Lazarus. Cependant, il est également compatible avec Delphi.
La plupart des bibliothèques XML sont très complexes. Chaque classe a tellement de méthodes qui pourraient être difficiles à utiliser et à les comprendre. Ces implémentations sont également très procédurales.
L'objectif principal est de remplacer le code de procédure commun, qui pourrait avoir autant de conditionnels et de variables, à un code déclaratif et orienté objet pour fonctionner plus facilement avec XML.
Le code suit une restriction des règles sur la dénomination et le style, en tant que préfixes et suffixes, pour aider les programmeurs à trouver la bonne classe ou la méthode pour faire le travail rapidement.
Clone le référentiel dans un répertoire de votre ordinateur.
En interne, ce projet utilise la bibliothèque XML intégrée pour chaque compilateur.
En plus de cela, nous utilisons d'autres bibliothèques:
Il a été testé à l'aide de ces versions:
Pour installer sur Lazarus :
JamesLib.lpk et mormot_base.lpk - voir les dépendances/pkg/XavierLib.lpkL'IDE sera au courant du package Xavierlib à utiliser dans n'importe quel projet.
Considérant <xavier> comme le chemin où vous avez enregistré les sources, votre projet doit inclure ces chemins:
Considérant <xavier> comme le chemin où vous avez enregistré les sources, vous devez inclure ces chemins dans votre projet:
<xavier>src;<xavier>srcdelphi Vous pouvez trouver quelques exemples pour utiliser Xavier dans sa propre source. Jetez un coup d'œil aux unités Xavier*Tests .
De plus, ci-dessous, vous pouvez trouver les bases pour commencer.
Prenez ce XML pour tous les exemples ci-dessous:
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< root >
< foo a1 = " f1 " a2 = " f2 " >
< value >foo</ value >
</ foo >
< bar a1 = " b1 " a2 = " b2 " >
< value >bar</ value >
</ bar >
</ root > Si vous souhaitez trouver le nœud enfant value du nœud foo , faites-le:
var
pack: IXMLPack;
n: IXMLNode;
begin
pack := TXMLPack.Create(
TDataFile.Create( ' file.xml ' ).Ref.Stream
);
n := pack.Node( ' /root/foo/value ' );
ShowMessage(n.Text); // "foo"
end . En fait, nous n'avons pas besoin de variables pack ou n . Appelez simplement directement:
begin
ShowMessage(
TXMLPack.Create(
TDataFile.Create( ' file.xml ' ).Ref.Stream
)
.Ref
.Node( ' /root/foo/value ' )
.Text
); // "foo"
end .Vous pouvez ajouter un nœud à faire facilement:
// add a new node: name="item" value="a"
begin
TXMLPack.Create(TDataFile.Create( ' file.xml ' ).Ref.Stream)
.Ref
.Node( ' /root ' )
.Add( ' item ' )
.Text( ' a ' )
end ;Vous pouvez compter le nombre d'enfants qu'un nœud a fait ceci:
// How many childs
begin
TXMLPack.Create(TDataFile.Create( ' file.xml ' ).Ref.Stream)
.Ref
.Node( ' /root ' )
.Childs
.Count
end ;Vous pouvez trouver n'importe quel attribut en faisant ceci:
// Find by name "id"
begin
TXMLPack.Create(TDataFile.Create( ' file.xml ' ).Ref.Stream)
.Ref
.Node( ' /root ' )
.Attrs
.Item( ' id ' )
end ;L'ajout d'un attribut est également assez facile:
// Add an attribute: name="foo" value="bar"
begin
TXMLPack.Create(TDataFile.Create( ' file.xml ' ).Ref.Stream)
.Ref
.Node( ' /root ' )
.Attrs
.Add( ' foo ' , ' bar ' )
end ;Ce projet est publié sous licence MIT. Voir la licence.