Форум: "Начинающим";
Текущий архив: 2008.12.21;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.052 c