Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

XML с дочерьми .. [D7]


timekiller ©   (2008-11-10 11:30:00) 

 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


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


timekiller   (2008-11-10 16:50:00) [1]

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


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

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


timekiller   (2008-11-10 16:21:00) [3]

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


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

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

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


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

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


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

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


timekiller   (2008-11-10 15:22:00) [7]

не, у вас тревоги никогда не бывает :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;


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

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

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


timekiller   (2008-11-10 13:24:00) [9]

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


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

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


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

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


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

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


timekiller   (2008-11-10 12:45:00) [13]

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

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

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


?


timekiller   (2008-11-10 12:37:00) [14]

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:00) [15]

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


Palladin   (2008-11-10 12:26:00) [16]

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


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


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

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

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


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

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


timekiller   (2008-11-10 11:41:00) [19]

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо