Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Чтение данных из XML   Найти похожие ветки 

 
Mikkle   (2010-05-08 10:16) [0]

дравствуйте.
У меня пара вопросов по переносу информации из xml-файла. Файл имеет такую структуру:

<main>
 <CN> a </CN>
 <Ct> b </Ct>
 <Place>
   <Reg> c </Reg>
   <Cod> d </Cod>
   <Nm> e </Nm>
   <Addr>
     <City> f </City>
     <Street> g </Street>
     <House> h </House>
   </Addr>
 </Place>
 <Place>
   <Reg> i </Reg>
   <Cod> j </Cod>
   <Nm> k </Nm>
   <Addr>
     <City> l </City>
     <Street> m </Street>
     <House> n </House>
   </Addr>
 </Place>
 <Dt> o </Dt>
</main>

я использую компонент TXMLDocument. С чтением из узлов, которые принадлежат непосредственно главному элементу main проблем не возникает, а вот вложенные подструктуры уже прочитать не могу. Я начинаю считывать так:

Node:=XMLDocument1.DocumentElement;
main.CN:=Node.ChildNodes.ChildValues["CN"];
main.Ct:=Node.ChildNodes.ChildValues["Ct"];

А дальше уже считать данные из <place> не получается. Узлы объявлены так:

A = record
 city: string;
 street: string;
 house: string;
end;
Pls = record
 Reg: string;
 Code: string;
 Nm: string;
 Addr: A;
end;
main = record
 CN: string;
 Ct: string;
 Place: Pls;
 Dt: string;
end;

Подскажите, пожалуйста, как прочитать информацию из "вложенных" деревьев. И еще вопрос: если у меня узел может встречаться в документе несколько раз (как, например, place), как сделать так, чтобы он все эти несколько раз и прочитался?


 
_Юрий ©   (2010-05-08 11:00) [1]


> Подскажите, пожалуйста, как прочитать информацию из "вложенных"
> деревьев.


var
 ChildNode: IXMLNode;
...

 for I := 0 to Node.ChildNodes.Count - 1 do
   begin
     ChildNode:=Node.ChildNodes[I];
     if ChildNode.NodeName = "Place" then
       Reg:=ChildNode.Attributes["Reg"]


 
Slym ©   (2010-05-11 18:51) [2]

Mikkle   (08.05.10 10:16)
TXMLDocument

отстой....
http://yandex.ru/yandsearch?text=XPath

doc:=CreateOleObject("Msxml2.DOMDocument") as IDispatch;
doc.load("doc.xml");
CN:=doc.selectSingleNode("main/CN").Text;
Ct:=doc.selectSingleNode("main/Ct").Text;
Nodes:=doc.selectNodes("main/Place");
for i:=0 to Nodes.length-1 do
begin
 city:=Nodes.item[i].selectSingleNode("Addr/City")
end;



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.176 c
11-1195764794
tigra
2007-11-22 23:53
2010.08.27
kol-synapse


2-1270625230
stovat
2010-04-07 11:27
2010.08.27
Применение формата для Label


15-1273773663
stas
2010-05-13 22:01
2010.08.27
Цифровая подпись Microsof


15-1270904059
xdragon
2010-04-10 16:54
2010.08.27
Тип void в Delphi.


3-1239892608
Сантропе
2009-04-16 18:36
2010.08.27
Подскажите утилиту для работы с PARADOX