Ксавье-это небольшая библиотека XML, объектно-ориентированную и кроссплатформенную, которая упрощает работу с файлами и потоками XML с использованием XPath.
Внимание: мы все еще в очень ранней альфа -версии, API может часто меняться. Пожалуйста, используйте его на свой собственный риск, пока мы не выпустим версию 1.0.
Этот API написан в свободном Паскале и Лазаре. Однако он также совместим с Delphi.
Большинство библиотек XML очень сложны. У каждого класса есть так много методов, которые могут быть трудно использовать и понять их. Эти реализации тоже очень процедурны.
Основная цель состоит в том, чтобы заменить общий процедурный код, который может иметь так много условных и переменных, на декларативный и объектно-ориентированный код для более легкой работы с XML.
Код следует за ограниченными правилами об именовании и стиле, как префиксы и суффиксы, чтобы помочь программистам найти правильный класс или метод для быстрого выполнения работы.
Клонировать репозиторий в каком -то каталоге на вашем компьютере.
Внутренне этот проект использует встроенную библиотеку XML для каждого компилятора.
Кроме того, мы используем другие библиотеки:
Он был протестирован с использованием этих версий:
Установить на Лазарь :
JamesLib.lpk и mormot_base.lpk ./pkg/XavierLib.lpkIDE будет осведомлен о пакете Xavierlib для использования в любом проекте.
Принимая во внимание <xavier> как путь, в котором вы сохранили источники, ваш проект должен включать эти пути:
Принимая во внимание <xavier> как путь, в котором вы сохранили источники, вы должны включить эти пути в свой проект:
<xavier>src;<xavier>srcdelphi Вы можете найти несколько примеров, чтобы использовать Ксавье в своем собственном источнике. Просто посмотрите на Xavier*Tests .
Кроме того, ниже вы можете найти основы для начала.
Возьмите этот XML для всех примеров ниже:
<? 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 > Если вы хотите найти value для дочернего узла foo , сделайте это:
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 . На самом деле, нам не нужны pack или n . Просто позвоните напрямую:
begin
ShowMessage(
TXMLPack.Create(
TDataFile.Create( ' file.xml ' ).Ref.Stream
)
.Ref
.Node( ' /root/foo/value ' )
.Text
); // "foo"
end .Вы можете легко добавить узел, делая это:
// 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 ;Вы можете подсчитать, сколько детей узел делает это:
// How many childs
begin
TXMLPack.Create(TDataFile.Create( ' file.xml ' ).Ref.Stream)
.Ref
.Node( ' /root ' )
.Childs
.Count
end ;Вы можете найти любой атрибут по имени, делая это:
// Find by name "id"
begin
TXMLPack.Create(TDataFile.Create( ' file.xml ' ).Ref.Stream)
.Ref
.Node( ' /root ' )
.Attrs
.Item( ' id ' )
end ;Добавить атрибут тоже довольно просто:
// Add an attribute: name="foo" value="bar"
begin
TXMLPack.Create(TDataFile.Create( ' file.xml ' ).Ref.Stream)
.Ref
.Node( ' /root ' )
.Attrs
.Add( ' foo ' , ' bar ' )
end ;Этот проект выпущен по лицензии MIT. Смотрите лицензию.