Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2017, 20:53   #1
German22
Новичок
Джуниор
 
Регистрация: 20.01.2017
Сообщений: 1
По умолчанию Delphi. XML парсер

Всех приветствую. Нужен парсер для XML файла, маюсь уже не первый день. Нормальной документации по TXMLDocument и IXMLNode нету. Приходится выкручиваться, что-то прочитал на форумах, что-то понял методом тыка... Вообщем есть XML файл :
Код:
<ltm version="1.0" type="settings" >
<progname>LTM</progname>
 
<templateFiles>
    <assets>fon.png</assets>
    <assets>fon_map.png</assets>
    <assets>start.js</assets>
    <assets>up.jpg</assets>
    <images>
        <pano>
            <tiles>pano_u.jpg</tiles>
            <tiles>pano_d.jpg</tiles>
            <tiles>pano_f.jpg</tiles>
        </pano>
        <tour>
            <tourimages>start.jpg</tourimages>
            <tourimages>tmb.jpg</tourimages>
        </tour>
    </images>
</templateFiles>
<dimensions>
    <tiles type="pc">1910</tiles>
    <tiles type="ipad">768</tiles>
    <tiles side="iphone">512</tiles>
    <tourimages name="start.jpg" edge="long">1024</tourimages>
    <tourimages name="start.jpg" edge="short">768</tourimages>
</dimensions>
 
<hotspot name="hs015_2" style="mappoint" scena="scene017" ath="68.17644363437007" />
<hotspot name="hs015_1" style="mappoint" scena="scene014" rz="4436007"/>          
<data name="onstart" mode="noVoice">Some text</data>
<data name="onerror" mode="noVoice">Some errortext</data>
<data name="onerror" mode="alarm">Other errortext</data>
</ltm>
И собственно сама программа :
Код:
program XMLParser;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Xml.XMLDoc, XMLIntf, ActiveX;

var XMLDocument1 : TXMLDocument;
    Node1 : IXMLNode;
    I : Integer;



begin
CoInitialize(nil);
XMLDocument1:=TXMLDocument.Create(nil);
XMLDocument1.LoadFromFile(FileName);
XMLDocument1.Active := true;
Node1:= XMLDocument1.DocumentElement;
for i := 0 to Node1.ChildNodes.Count - 1 do
begin
    WriteLn(Node1.ChildNodes[i].NodeName); //Прочитать и вывести все элементы принадлежащие Lmt
end;

 for i := 0 to Node1.AttributeNodes.Count - 1 do
 begin
    WriteLn(Node1.AttributeNodes[i].NodeName
      + '="' + Node1.AttributeNodes[i].NodeValue + '"');//Выводит артибуты элемента, но почему то только Lmt.
end;


XMLDocument1.Active := false;
ReadLn;
end.
Что я хочу:
  • Прочитать скажем вот этот элемент "<data name="onerror" mode="noVoice">Some errortext</data>"
  • Если (name="123") тогда скопировать из элемента <tourimages name="start.jpg" edge="long">1024</tourimages> значение атрибута edge="long" в файл
  • Иначе продолжить листать файл дальше(тегов очень много, просто они повторяются)
Запись в файл думаю организую сам, с этим проблем не будет. Есть идея запустить перебор и в процессе него организовать все эти действия, только как? И почему
Код:
for i := 0 to Node1.AttributeNodes.Count - 1 do
 begin
    WriteLn(Node1.AttributeNodes[i].NodeName
      + '="' + Node1.AttributeNodes[i].NodeValue + '"')
выводит артибуты только Lmt. Пробовал вставлял его в циклы, все равно. Нужна ваша помощь, очень не хватает знаний по этой теме. Прежде всего нужен опыт, ну а потом уже работающая программа. Графический интерфейс не предлагать! Надеюсь все правильно описал. Сильно не пинайте, только учусь.
German22 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посоветуйте XML парсер для Delphi Arkuz Общие вопросы Delphi 25 17.04.2014 16:02
XML Парсер Berlioz Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 02.01.2013 21:23
Парсер XMl в Delphi RusExcellent Помощь студентам 2 16.11.2011 11:44
XML парсер squa JavaScript, Ajax 0 09.02.2011 09:14
парсер XML, не видит XML тэги supercelt PHP 3 02.11.2009 19:18