Текущий архив: 2013.09.01;
Скачать: CL | DM;
Вниз
XLMDocumnet пройтись по всем нодам. Найти похожие ветки
← →
Den (2012-12-18 18:45) [0]В общем есть XML документ в нем ноды есть, у некоторых нод есть чайлд ноды, как пройтись по всем нодам в цикле? Тоесть чтоб цикл зашел в каждую и прочитал значение атрибута name к примеру?
← →
Плохиш © (2012-12-18 18:48) [1]Цикл + Рекурсия
← →
Медвежонок Пятачок © (2012-12-18 18:51) [2]xdoc.selectNodes("//*"); + просто цикл без рекурсии
Но только не TXMLDocument.
Он упрощенный. Для дошколят.
← →
Медвежонок Пятачок © (2012-12-18 19:01) [3]
type
TXMLNodeEnumCallBack = function(iNode : IXMLDOMNode; var bMore : boolean; ACustomData : Pointer) : boolean of object;
function xml_EnumXMLDOMNodeList(iBaseNode : IXMLDOMNode; const AXPath : string; ACallback : TXMLNodeEnumCallBack; ACustomData : Pointer) : integer;
var bMore : boolean; i : integer; iList : IXMLDOMNodeList;
begin
Result := 0; bMore := True;
if (iBaseNode <> nil) then
begin
iList := iBaseNode.selectNodes(AXPath);
if (iList <> nil) and (iList.length > 0) and Assigned(ACallBack)then
begin
for i := 0 to Pred(iList.length) do
begin
if ACallback(iList.item[i],bMore,ACustomData) then Inc(Result);
if not bMore then Break;
end;
end;
end;
end;
← →
Den (2012-12-18 19:02) [4]Рекурсия.... ктото может на пальцах обяснить как это должно работать? К примеру есть дерево из нодов, они одинаковые, как рекурсия будет знать что эту ноду к примеру уже проходили? Это надо же чтото записывать о ней типа сюда не ходи тут уже были.. А че записывать то? В html sourceindex есть это уникальный номер элемента в таблице, а тут как?
Медвежонок Пятачок спасибо буду юзать этот вариант но с рекурсией хочу понять всетаки как оно работает. Ответ типа - чтоб понять принцып рекурсии, нужно понять принцып рекурсии, не предлагать:)
← →
Den (2012-12-18 19:03) [5]ага! Пока пост сочинял уже есть то что я хотел понять.
← →
brother © (2012-12-18 19:05) [6]http://www.stihi.ru/pics/2009/09/20/4211.jpg
а еще точнее:
http://borlpasc.narod.ru/docym/recyr.htm
← →
Медвежонок Пятачок © (2012-12-18 19:09) [7]Рекурсия.... ктото может на пальцах обяснить как это должно работать?
не слушай плохиша.
он тебя плохому научит.
← →
Медвежонок Пятачок © (2012-12-18 19:22) [8]uses ComObj;
...
var xdoc,xlist : OleVariant; i : integer;
begin
xdoc := CreateOleObject("Msxml2.DOMDocument");
xdoc.loadXML("<root><вася/><петя/><маша><глаша/></маша></root>");
xlist := xdoc.selectNodes("//*");
for i := 0 to Pred(integer(xlist.length)) do ShowMessage("Здравствуйте, я узел " + xlist.item[i].nodeName);
end;
← →
Den (2012-12-18 19:34) [9]Медвежонок Пятачок не да спасибо, я просто заодно с этим разобраться хотел, никак не могу понять как оно работает, сижу вот пошагово смотрю по f8 как оно фурычит может дойдет наконец
Procedure GetDirList(InitialDir:String; DirList:TStrings);
Var
Info:TSearchRec;
InitialDirPartOne,InitialDirPartTwo :string;
Begin
InitialDirPartOne:=InitialDir + "\*.";
If FindFirst(InitialDirPartOne, faDirectory, Info) = 0 Then Begin
If (Info.Name <> ".") And (Info.Name <> "..") Then Begin
InitialDirPartTwo:=InitialDir + "\" + Info.Name;
DirList.Add(InitialDirPartTwo);
GetDirList(InitialDirPartTwo, DirList);
End;
While FindNext(Info) = 0 Do
If (Info.Name <> ".") And (Info.Name <> "..") Then Begin
InitialDirPartTwo:=InitialDir + "\" + Info.Name;
DirList.Add(InitialDirPartTwo);
GetDirList(InitialDirPartTwo, DirList);
End
End;
FindClose(Info)
End;
← →
Медвежонок Пятачок © (2012-12-18 19:55) [10]не знаю зачем тебе ф8 для понимания рекурсии.
достаточно рассмотреть один единственный иф и все.
если <что-то> зен функция вызывает саму себя.
← →
Den (2012-12-18 20:10) [11]Я понимаю что она сама себя вызывает, моя не понимать как она по всем папкам идет и не зацикливается на одной левой ветке дерева. Онаж должна знать как-то что вот эту дерикторию отметили всю, больше там нечего делать, надо смотреть в другую, если она есть и так далее.
← →
RWolf © (2012-12-18 20:45) [12]она и знает — всё на стеке лежит.
← →
Медвежонок Пятачок © (2012-12-18 20:58) [13]как она по всем папкам идет и не зацикливается на одной левой ветке дерева
чо, и цикл файндфёста/файнднекста непонятен?
так это к рекурсии не имеет отношения.
Вот простейшая рекурсивная функция :
function sample : integer;
begin
result := 1;
if <еще_не_обед> then result := result + sample;
end;
← →
Den (2012-12-19 01:29) [14]она и знает — всё на стеке лежит. - как посмотреть на это в дэлфи? ну то есть - чтоб вот передо мной стек был, я кнопку нажимал и видел один шаг того как оно это все делает?
← →
Styx (2012-12-19 02:06) [15]Ну так в отладчике всё есть, так и проходите...
← →
Плохиш © (2012-12-19 02:32) [16]
> Den (18.12.12 20:10) [11]
> Я понимаю что она сама себя вызывает, моя не понимать как
> она по всем папкам идет и не зацикливается на одной левой
> ветке дерева.
Вот это ни на какие мысли не наводит?
> InitialDirPartTwo:=InitialDir + "\" + Info.Name;
← →
Den (2012-12-19 03:17) [17]attributeList: Ixmldomnamednodemap; вот на это пишет Undeclared identifier: "Ixmldomnamednodemap" чего ему не хватает?
← →
sniknik © (2012-12-19 08:02) [18]> attributeList: Ixmldomnamednodemap; вот на это пишет Undeclared identifier: "Ixmldomnamednodemap" чего ему не хватает?
перевести не пробовал? пишет же прямым текстом ответ на твой вопрос.
← →
Медвежонок Пятачок © (2012-12-19 08:47) [19]ему не хватает юзис.
например MSXML2_TLB.pas
← →
Плохиш © (2012-12-19 12:06) [20]
> Медвежонок Пятачок © (19.12.12 08:47) [19]
> ему не хватает юзис.
> например MSXML2_TLB.pas
99% - следующий вопрос будет "Где его взять?" :-)
← →
Медвежонок Пятачок © (2012-12-19 12:11) [21]Сверху пример без модуля.
← →
Den (2012-12-19 16:14) [22]99% - следующий вопрос будет "Где его взять?" :-) - блин есть короче шоу такое битва экстрасенсов, я думаю у тебя есть неплохие шансы там взять призовое место! Дак де его взять то? вот этот модуль вот MSXML2_TLB ?
← →
Медвежонок Пятачок © (2012-12-19 16:20) [23]Сверху пример с поздним связыванием. Без этого модуля.
А как сделать модуль написано в интернетах.
Import Type Library --> create unit
← →
Den (2012-12-19 16:24) [24]Сверху пример без модуля. - я видел но вкратце че я хочу сделать, есть XML файл как уже было понятно из описания первого вопроса, из етого файла приложение будет вытаскивать разную информацию которая ему надо, например нужно добавить несколько значений в одну строку в Excel эти значения будут лежать в таком виде
<vExcel>
<adin atr1="100" atr2="Variant-NomerPosledneiStroki"></<adin>
<dva atr1="200" atr2="Variant-NomerPosledneiStroki"></dva>
</vExcel>
Вотето вот atr2="Variant-NomerPosledneiStroki" это будет типа переменная ее надо будет заменить на номерр строки запомнить как было и вконце вместо ногмера опять записать Variant-NomerPosledneiStroki, для всего этого безобразия мне надо пройтись по всем атрибутам ноды в том примере (без модуля) юзается DOMDocument у него у ноды есть коллекция с атрибутами, attributes вот как я понимаю чтоб е вытянуть мне нужен Ixmldomnamednodemap вот такой вот вещь но его не дает включить без модуля а на модуль матукаеццо что нет такого dcu файла, печаль короче:(
← →
Den (2012-12-19 16:24) [25]Медвежонок Пятачок - пасибо еще раз буду шаманить дальше:)
← →
Медвежонок Пятачок © (2012-12-19 16:28) [26]зачем тебе все атрибуты узла, если записывать надо в конкретный?
← →
Den (2012-12-19 16:29) [27]а пес его знает, хочется гибкости, чтоб не надо было не только придумывать название "переменной" а еще и куда хош пихать ее.
← →
Den (2012-12-19 16:31) [28]чтоб не надо было не только придумывать название "переменной" - читать как - не только запоминать как назвал переменную. Блин короче хочу больше чтоб было вариантов куда ее можно было записать тоесть atr1="variatn-Onda" atr1="variatn-Dve" i td
← →
Den (2012-12-19 16:32) [29]atr1="variatn-Onda" atr2="variatn-Dve" i вот так веренее
← →
Плохиш © (2012-12-20 12:52) [30]Зачем оно тебе это программирование? Тебе всё-равно не интересно.
PS. google сказал
Ungefähr 6.240 Ergebnisse
← →
Den (2012-12-21 08:15) [31]Чего это не интересно? Да и дело не в интересе, не люблю просто монотонную работу делать. Писать скрипты намного прикольнее. А само програмирование да, честно не люблю учить то что уже придумали взять тот же xml еслиб было время то фиг бы я заморачивался читать как его там придумали, а склепал бы все сам. долго? да, но зато все понятно что и как работает и чтоб исправить что-то не нужно 2 часа по гуглу шариться.
← →
Den (2012-12-21 08:22) [32]вот к примеру нужно было чтото в этом xml типа переменных что-то, посмотрел есть такое вроди, entity кажется так зовется, не хочу в гугл лезть, казалось бы чего проще бери юзай, а хрен delphi2010 не дает работать с какойто там схемой, короче нада лезть в xmldom там чтото править чтото делать, мля.. накой мне это гавно надо ваще? За это же время (ну чуть больше) которое я потратил на поиски, уже давно бы сделал то что я хотел, а в голове все это дежрать извините... завтра еще какуюто пургу придумают, потом еще и еще да ну короче меньше знаешь лучше спишь:)
Страницы: 1 вся ветка
Текущий архив: 2013.09.01;
Скачать: CL | DM;
Память: 0.55 MB
Время: 0.006 c