![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Dom парсер для XML
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