![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
XML [D6, Win2k]
PONTIY © (2002-07-16 06:38:00)
XML: TXMLDocument;
XML.LoadFromFile(OpenDialog.FileName);
XML.ChildNodes.First;
далее делаем
XML.Node.NodeName
XML.Node.NodeValue
а как собственно переходить от нода к ноду?
т.е. нужно пройтись по всему xml и собрать имена нодов и их значения
Lmatveev (2002-07-16 09:38:00) [1]Как и для любого дерва - рекурсивный вызов процедуры, описанной выше:
procedure ProcessDocument(AXML: TXMLDocument);
procedure AddChilds(AChilds: IXMLNodeList)
var i: integer;
begin
if AChilds.Count=0 then exit;
for i := 0 to AChilds.Count-1 do begin
Memo1.Lines.Add(AChilds[i].NodeName);
AddChilds(AChilds[i].ChildNodes);
end;
end;
begin
AddChilds(AXML.ChildNodes);
end;
int64 (2002-07-16 09:08:00) [2]Конечно есть. Например просмотр исходных текстов компонент, когда F1 не работает. :)
StarCon (2002-07-16 08:25:00) [3]то бишь чтобы докапаться до 10 уровня надо использовать
XML.ChildNodes[i].ChildNodes[j].ChildNodes[a].ChildNodes[b].ChildNodes[c].ChildNodes[d].ChildNodes[f].ChildNodes[h].ChildNodes[g].ChildNodes[k].NodeName????
наверное есть другой подход?
int64 (2002-07-16 08:05:00) [4]Также, как и с TList.
for i:= 0 to XML.ChildNodes.Count-1 do
begin
Memo1.Lines.Add("NodeName: "+XML.ChildNodes[i].NodeName);
for j:=0 to XML.ChildNodes[i].ChildNodes.Count-1 do
Memo1.Lines.Add("ChildName: "+XML.ChildNodes[i].ChildNodes[j].NodeName);
Memo1.Lines.Add("Count ChildNodes: "+inttostr(
XML.ChildNodes[i].ChildNodes.Count));
Memo1.Lines.Add("Count Elements: "+inttostr(
XML.DocumentElement.ChildNodes[i].ChildNodes.Count));
Memo1.Lines.Add("--------------");
end;CODE>