Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Dom парсер для XML


Страницы:   1 2

Dark ©   (2008-01-29 19:04:00) 

У меня задача: считать весь xml в память и иметь возможность по нему перемещаться, что не позволяет Sax парсер. По-этому буду использовать Dom парсер. Но обыскав интернет не нашел примеров его использования. Может может кто выложить пример его использования? Буду очень благодарен.


Dark   (2008-01-30 16:05:00) [1]

Щас попробую Спасибо


Галинка   (2008-01-30 15:42:00) [2]

там должно быть свойство Attributes.

Маленький примерчик:

           XmlDocument doc = new XmlDocument();
           doc.LoadXml("<book genre='novel' publicationdate='1997'> " +
                       "  <title>Pride And Prejudice</title>" +
                       "</book>");

           XmlAttributeCollection attrColl = doc.DocumentElement.Attributes;

           Console.WriteLine("Display all the attributes for this book...");
           for (int i = 0; i < attrColl.Count; i++)
           {
               listBox1.Items.Add(attrColl.Item(i).Value);
           }


Зезультатик:

novel
1997


Плохиш   (2008-01-30 15:33:00) [3]

.Attributes['xxx'] := xxx;


Dark   (2008-01-30 15:28:00) [4]

А то я вот это делаю, а как атрибут присвоить че-то в хелпе не нашел

procedure NextQuestion();
var
v,q,o1,o2,o3,o4,o5,n: IXMLNode;
begin
questn:=questn+1;
XMLDocument1.FileName:='test.xml';
XMLDocument1.Active:=True;
Variant:='variant'+inttostr(varsel);
Quest:='q'+inttostr(questn);
 n:=XMLDocument1.ChildNodes.FindNode(variant);
 q:=n.ChildNodes.FindNode(quest);
 o1:=q.ChildNodes.FindNode('ot1');
 o2:=q.ChildNodes.FindNode('ot2');
 o3:=q.ChildNodes.FindNode('ot3');
 o4:=q.ChildNodes.FindNode('ot4');
 o5:=q.ChildNodes.FindNode('ot5');
end;


Dark   (2008-01-30 15:24:00) [5]

тьфу атрибут quest


Dark   (2008-01-30 15:23:00) [6]

Правильно! Вот мне нужен пример как считать у этого тега <q1 quest='Ты кто?'> атрибут name


Галинка   (2008-01-30 15:09:00) [7]

Насколько я поняла, ты нужный тебе текст храниш в аттрибутах. Тогда надо аттрибут преобразовывать в текст, и складывать в Caption метки.


DiamondShark   (2008-01-30 11:52:00) [8]


> Кто-нибудь! Помогите с постом [14]! Привидите пример!

Как кто-нибудь его на русский переведёт, так сразу.


sniknik   (2008-01-29 23:54:00) [9]

> 2005+, может раньше
D7 уже есть. раньше хз. но даже если нет то поставить... вся трудность галочку установить на "генерировать врапер" при импорте библиотеки типов... (а то и вообще она по умолчанию "взведена" ... )


homm   (2008-01-29 21:34:00) [10]

> [8] Галинка ©   (29.01.08 19:27)
> Или что конкретно ты хочешь?

Он же сказал, DOM он хочет, а clickmaker правильно уже подсказал что даже в стандартной дельфе (2005+, может раньше) есть такой компонент.


Dark   (2008-01-29 20:40:00) [11]

Кто-нибудь! Помогите с постом [14]! Привидите пример!


Dark   (2008-01-29 20:15:00) [12]

Да, впринципе то, что надо. Спасибо. Но ещё кое-что можешь привестив  пример конкретный кусок кода который считает параметр quest у этого узла и выведет в Лэйбел lblQuestion (к примеру): <q1 quest='Ты кто?'>


Галинка   (2008-01-29 19:57:00) [13]

в моем понимании прелесть Xml и ограничивается наличием в классе DataSet метода FromXml (или что-то в этом роде). Потому что работать с моделью набора данных легче.

Хотя можно что-то типа:

1. Грузим в XmlDocument нужный файл;
2. Выбираем вариант. Перемещаемся на нужный узел первого уровня.
3. Делаем нафигатор, для путешествия по вопросам (читай по дочерним узлам "Варианта").
4. Проходя по вопросам, создаем динамически метки(лэйблы) и отображаем в них нужные строки.

ПыСы: с тестовыми прогами дел вобщем-то не имела ни разу. Вероятно не поняла твоей задумки. Но общий курс должен подойти.


Dark   (2008-01-29 19:39:00) [14]

Попробую сделать так, как описано по твоей ссылке.


Dark   (2008-01-29 19:39:00) [15]

А смысл.мне кажется это лишний гемморой, если можно напрямую считывать


Галинка   (2008-01-29 19:37:00) [16]

я бы конвертировала такой хмл в датасет и спользовала бы нормальные DBControls (DBNavigator, DBLabel etc).


Dark   (2008-01-29 19:33:00) [17]

Я создал xml такого типа

Предмет
вариант1
  вопрос1
     ответ1
     ответ2
     ...
  /вопрос1
/вариант1
вариант2
...
/Предмет

В программе у меня есть Лэйбэлы для вопроса и ответов. При запуске выбирается вариант и присваивается переменной, скрывается форма варианта, показывается сам тест. и вот мне надо присваивать всем Лэйбелам соответствующие значения из xml


Галинка   (2008-01-29 19:27:00) [18]

Altova XMLSpy или хотябы браузером можно просмотреть файл. Или что конкретно ты хочешь?


Галинка   (2008-01-29 19:26:00) [19]

для меня в свое время хорошим примером была перегонка XmlDocument'а в TreeView.


Dark   (2008-01-29 19:25:00) [20]


> Да-да, я знаю. я делаю нехитрую штуку - тест. Уже написал
> прогу для записи в xml, теперь осталось тока прога для самого
> теста.

Читающая сам тест из xml


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо