Главная страница
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.045 c
2-1275032909
12
2010-05-28 11:48
2010.08.27
Откуда то происходит beep, при закрытии формы. Не надо его.


2-1270824084
V
2010-04-09 18:41
2010.08.27
CreateDir


15-1269519396
Аноним
2010-03-25 15:16
2010.08.27
Кто там хотел уменьшить размер exe?


2-1268305355
fford
2010-03-11 14:02
2010.08.27
копировать текст из RichEdit в поток


15-1269420643
Sergey2
2010-03-24 11:50
2010.08.27
формат с разделителями