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

Вниз

XML с дочерьми ..   Найти похожие ветки 

 
timekiller ©   (2008-11-10 11:30) [0]

 if Assigned(XMLd.ChildNodes) then
 for a1:=0 to XMLd.ChildNodes.Count-1 do
 if Assigned(XMLd.ChildNodes[a1].ChildNodes) then
 for a2:=0 to XMLd.ChildNodes[a1].ChildNodes.Count-1 do
 if Assigned(XMLd.ChildNodes[a1].ChildNodes[a2].ChildNodes) then
 for a3:=0 to XMLd.ChildNodes[a1].ChildNodes[a2].ChildNodes.Count-1 do
 if Assigned(XMLd.ChildNodes[a1].ChildNodes[a2].ChildNodes[a3].ChildNodes) then
 for a4:=0 to XMLd.ChildNodes[a1].ChildNodes[a2].ChildNodes[a3].ChildNodes.Count-1 do


Пожалуйста, Подскажите как оптимизировать это х..
(Узнать не только количество узлов, но и количество, блин, дочерности узла)


 
Поросенок Винни-Пух ©   (2008-11-10 11:36) [1]

циклы, рекурсия, функции....


 
timekiller ©   (2008-11-10 11:41) [2]

это понятно
есть допустим ChildNodes.Count-1 - цикл по "У" сам напрашивается
а цикл по "Х" как сделать, у кого узнать Count?


 
Поросенок Винни-Пух ©   (2008-11-10 12:02) [3]

циклы делаются одинаково


 
timekiller ©   (2008-11-10 12:17) [4]


<name>
 <Containing>
   <lot>
     <bla>
       <blabla>
         <blablalalaaaaaa>
           <itsTheEnd>
           </itsTheEnd>
         </blablalalaaaaaa>
       </blabla>
     </bla>
   </lot>
 </Containing>
</name>
............

Как определить номер вложенной ветки <itsTheEnd>? Может быть ..  это называется номер вложенности?

ps: циклы делаются одинаково, но я спросил не про циклы а про Count для цикла, ну например если очень грубо:
StringGrid1.RowCount = XmlDocument1.ChildNodes.Count
StringGrid1.ColCount = ?


 
Palladin ©   (2008-11-10 12:26) [5]

и что же в этом XML является col"ами ?


 
timekiller ©   (2008-11-10 12:37) [6]

1<1>
2  <2>
3    <3>
4      <4>
5        <5>
6          <6>
6          </6>
5        </5>
4      </4>
3    </3>
2  </2>
1</1>

Количество вложенностей, не? у 1 - 5 вложенностей, у 4 - 2


 
timekiller ©   (2008-11-10 12:37) [7]

1<1>
2  <2>
3    <3>
4      <4>
5        <5>
6          <6>
6          </6>
5        </5>
4      </4>
3    </3>
2  </2>
1</1>

Количество вложенностей, не? у 1 - 5 вложенностей, у 4 - 2


 
timekiller ©   (2008-11-10 12:45) [8]

Подскажите тогда лучше как сделать поиск по нодам? Есть ли какие-нибудь варианты перемещений по координатам или по путям XPath?

Есть ли функция наподобие:

if searchnode(XMLDocument1).name="2я_нода_в_корне" then showmessage("1") else
if searchnode(XMLDocument1).name="139я_нода_в_14узле" then showmessage("5");


?


 
Поросенок Винни-Пух ©   (2008-11-10 12:48) [9]

конечно есть. xpath он и есть xpath.


 
timekiller ©   (2008-11-10 12:55) [10]

Хотя так влом работать с XPath, строками и pos и чтобы найти чтото..


 
Поросенок Винни-Пух ©   (2008-11-10 12:56) [11]

а навигационный метод это конечно же не влом. это зашибись.
чо тогда за вопросы?


 
timekiller ©   (2008-11-10 13:24) [12]

Все спасибо отбой, на другом форуме подсказали :)


 
brother ©   (2008-11-10 13:32) [13]

> Все спасибо отбой,

а была тревога? ;)


 
timekiller ©   (2008-11-10 15:22) [14]

не, у вас тревоги никогда не бывает :D это понятно
а вот то что я хотел найти (другим в помощь):


function GetNodeValue(XMLn:IXMLNode;NodeName:String):string;
var i,j:integer;
begin
 if Assigned(XMLn.ChildNodes) then
 for i:=0 to XMLn.ChildNodes.Count-1 do
 if (XMLn.ChildNodes[i].NodeName=NodeName) then
 begin
   Result:=XMLn.ChildNodes[i].Text;
 end else
 if Assigned(XMLn.ChildNodes[i].ChildNodes) then
 Result:=GetNodeValue(XMLn.ChildNodes[i],NodeName);
end;


 
Поросенок Винни-Пух ©   (2008-11-10 15:59) [15]

изврату ребенка научили. за такое надо давать как за растление малолетних.


 
timekiller ©   (2008-11-10 16:08) [16]

Ну пришлось делать конвертер того парсера, программёр которого люто ненавидел xsd
Предложил бы не изврат, вместо слова "рекурсия", или еще сам ребёнак? :D


 
Поросенок Винни-Пух ©   (2008-11-10 16:11) [17]

Ну пришлось делать конвертер того парсера, программёр которого люто ненавидел xsd

В итоге получилось:
Один извращенец правит работу другого извращенца.


 
timekiller ©   (2008-11-10 16:21) [18]

Мне продолжить с тобой по душам или предложить тебе всетаки не извращаться надо мной, а привести 1 какой-нибуть аргумент? :)


 
Поросенок Винни-Пух ©   (2008-11-10 16:28) [19]

Зачем тебе аргумент если ты и так счастлив?


 
timekiller ©   (2008-11-10 16:50) [20]

ну чет хочешь доказать - а мне интересно, я ж вроде учусь



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

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

Наверх




Память: 0.51 MB
Время: 0.024 c
2-1226407448
Новичок00
2008-11-11 15:44
2008.12.21
Документация по Jedi VCL


2-1226596493
snake-as
2008-11-13 20:14
2008.12.21
TreeView


4-1202719189
lead-in
2008-02-11 11:39
2008.12.21
Socket`ы или кривые руки


15-1223761025
МемТест
2008-10-12 01:37
2008.12.21
Под Windows XP максимум памяти - это 2 или 4 Гб?


15-1224154232
Darvin
2008-10-16 14:50
2008.12.21
COM и иерархия ООП