Работа с XML

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Аватара пользователя
Slavikk
постоялец
Сообщения: 208
Зарегистрирован: 15.01.2007 21:34:52
Откуда: Из лесов...
Контактная информация:

Работа с XML

Сообщение Slavikk »

Нужен сабж:
1. Програмное создание XML и таблицы внём
2. Чтение определённых строк
3. Изменение определённых строк
first-leon
новенький
Сообщения: 68
Зарегистрирован: 20.04.2006 18:46:31
Контактная информация:

Сообщение first-leon »

Компоненты есть какие то, наверное с ними надо рыть:
TXMPPropStorage
TSynXMLSyn
Serge30
незнакомец
Сообщения: 6
Зарегистрирован: 08.01.2007 22:57:21

Сообщение Serge30 »

first-leon писал(а):Компоненты есть какие то, наверное с ними надо рыть:

TXMPPropStorage
TSynXMLSyn


Это не то.
TXMLPropStorage - предназначен для сохранение в XML параметров формы и компонентов на ней, а TSynXMLSyn - для подсветки синтаксиса XML в TSynEdit.

Лучше копать в сторону FCL. Там в папке XML есть модули для работы с данным форматом.
SergKam
постоялец
Сообщения: 251
Зарегистрирован: 16.11.2005 20:31:11
Откуда: Украина,Харьков

Сообщение SergKam »

TXMLDom - вперед и с песьнями. общепринятый стандарт есть в delphi и fpc
в help -е делфи7 все подробно описано и с примерами
Аватара пользователя
Slavikk
постоялец
Сообщения: 208
Зарегистрирован: 15.01.2007 21:34:52
Откуда: Из лесов...
Контактная информация:

Сообщение Slavikk »

:lol: - А пример привести нетрудно, а то недоходит немного...
SergKam
постоялец
Сообщения: 251
Зарегистрирован: 16.11.2005 20:31:11
Откуда: Украина,Харьков

Сообщение SergKam »

что именно не доходит.
загляни в /usr/share/fpcsrc/fcl/xml
там дофига всего.
может скажешь что тебе конкретно от него нужно.

Код: Выделить всё

uses .......,dom,xmlread;
...
var
dom:TXmlDoсument
...
begin
ReadXmlFile(thedom,'test.xml');
writeln(thedom.FirstNode.Name);
thedom.free;
end;

достаточно? :)
там куча property у каждого нода



ps:cвойства соответствуют этим http://www.topxml.com/xml_dom/default.asp
vitaskin
незнакомец
Сообщения: 6
Зарегистрирован: 22.01.2007 18:04:43

Сообщение vitaskin »

Вопрос!
А как правильно использовать XPath выражения

Пример, есть у меня документ
<conf>
<storage name="st1">хранилище раз</storage>
<storage name="st2">хранилище два</storage>
<storage name="st3">хранилище три</storage>
</conf>

Код: Выделить всё

var 
  dom:TXmlDoсument
  XPathResult: TXPathVariable;
begin
  //загрузил
  ReadXmlFile(dom,'storage.xml');

  //пытаюсь получить узел по XPath выражению
  XPathResult := EvaluateXPathExpression('conf/storage/[@name="st2"]', dom);
 
  //пытаюсь получить узел
  if XPathResult.AsNodeSet.Count > 0 then
    TDOMNode(XPathResult.AsNodeSet.Items[0]).NodeValue
end;


В данном примере, у меня не получается получить а не одного узла.
Подскажите, что я не так делаю?
Последний раз редактировалось vitaskin 24.01.2007 09:54:27, всего редактировалось 1 раз.
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

сравните со своим примером в XML файле у вас conf
а XPath - config

conf/storage/[@name="st2"]
vitaskin
незнакомец
Сообщения: 6
Зарегистрирован: 22.01.2007 18:04:43

Сообщение vitaskin »

Это я опечатался, но погоду это не меняет :(
vitaskin
незнакомец
Сообщения: 6
Зарегистрирован: 22.01.2007 18:04:43

Сообщение vitaskin »

Если кто-то работал с XPath, дайте рабочий пример :)
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Ну попробуй /conf/storage/[@name="st2"]
С данным модулем не работал, а XPath выражение правильнос составлено.
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Нет, не правльно
/conf/storage[@name="st2"]
Слешь перед квадратной скобкой лишний!
vitaskin
незнакомец
Сообщения: 6
Зарегистрирован: 22.01.2007 18:04:43

Сообщение vitaskin »

Все равно не работает
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Проверил, и у меня тоже не работает...
SergKam
постоялец
Сообщения: 251
Зарегистрирован: 16.11.2005 20:31:11
Откуда: Украина,Харьков

Сообщение SergKam »

в конце примера XML
<conf> надо </conf>

и кажется надо чтобы в начале обязательное обьявление xml было
<?XML version="1.0"?>
Ответить