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

Вниз

Я что-то не понял с этим XML...   Найти похожие ветки 

 
VID ©   (2006-12-19 12:28) [0]

Есть такая XML:

 <PLANEXPENSE>
   <ESTIMATE ID="1000000004" CAPTION="sometext" KIF_ID="1" ESTKIND_ID="1" ESTKIND_CAPTION="Роспись"/>
   <!--Child #1-->
   <ORG ID="1000000276" CAPTION="sometext" DESCRIPTION="sometext" TAXCODE="5257056163" KPP="525701001" OKATO=""/>
   <!--Child #2-->
   <RECIPIENT ID="1000000276" CAPTION="sometext" DESCRIPTION="sometext" TAXCODE="5257056163" KPP="525701001" OKATO=""/>
   <!--Child #3-->
   <TERRITORY ID="1000000061" CODE="32051" OKATO="22401000000" CAPTION="г. sometext"/>
   <!--Child #4-->
   <OPERTYPE ID="0" CAPTION="НЕ УКАЗАНА"/>
   <!--Child #5-->
   <KBK KFSR_CODE="408" KCSR_CODE="3150000" KVR_CODE="365" KADMR_CODE="198" KESR_CODE="241" KDF_CODE="0" KDE_CODE="21" KDR_CODE="0" KIF_ID="1"/>
   <!--Child #6-->
   <AMOUNT PLANQUART1="" PLANQUART2="" PLANQUART3="" PLANQUART4="" PLANONDATE="" UPDATEQUART1="534037999" UPDATEQUART2="399968000" UPDATEQUART3="674736001" UPDATEQUART4="320332000" UPDATEONDATE="1929074000" EXEC=""/>
   <!--Child #7-->
 </PLANEXPENSE>


Начинаю работать с ней
var
 El: IXMLDOMElement;
begin
 El := Doc.documentElement; //(Doc - это и есть представленый XML)
 El := El.firstChild as IXMLDOMElement;
 while Assigned(El) do
 begin
   ShowMessage(El.xml);    
   El := El.nextSibling as IXMLDOMElement;
 end;
end;


Задумка проста, пройтись по всем дочерним элемента главного элемента <PLANEXPENSE>. Я думал, что сначала я получу элемент <ESTIMATE>, затем <ORG>, затем <RECIPIENT> и тд. Однако я получаю такую последовательность:
<ESTIMATE>, <!--Child #1-->, <ORG>, <!--Child #2--> и тд.
Т.е. комментарии, находящиеся внутри XML тоже считаются за секции, и идут в качестве nextSibling. И это меня огорчило.

Есть ли какое-нибудь стандартное решение, что бы коменты игнорились при переборе дочерних элементов ?


 
Reindeer Moss Eater ©   (2006-12-19 12:30) [1]

Любой нод имеет тип. Его можно анализировать.


 
VID ©   (2006-12-19 12:36) [2]

как, например, отличить комент от обычного нода с аттрибутами ?


 
Плохиш ©   (2006-12-19 12:51) [3]


> VID ©   (19.12.06 12:36) [2]
> как, например, отличить комент от обычного нода с аттрибутами?

Это риторический вопрос? Или ищешь, кто за тебя справку почитает?


 
Reindeer Moss Eater ©   (2006-12-19 13:03) [4]

как, например, отличить комент от обычного нода с аттрибутами ?

По запаху. Если по свойствам не умеешь.

Или сразу с помощью XPath получить список нужных тебе нодов

var iList : IXMLDomNodeList;
begin
//Все узлы-потомки рутового элемента, не являющиеся коментами
lList := doc.selectNodes("root/*");



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

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

Наверх




Память: 0.48 MB
Время: 0.04 c
15-1169150541
Cyrax
2007-01-18 23:02
2007.02.11
Общий принцип организации виртуальных методов и...


15-1169421881
Mr. D.
2007-01-22 02:24
2007.02.11
Установка шрифта в InnoSetup


2-1169749750
electroman239
2007-01-25 21:29
2007.02.11
Цвет РГБ в Интегер


2-1169473697
agfhg
2007-01-22 16:48
2007.02.11
БД


15-1168916009
Юнит
2007-01-16 05:53
2007.02.11
Как прописать {$DEFINE UseBox}, чтобы она была видна во всех юнит