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

Вниз

Объединение двух XML   Найти похожие ветки 

 
Ш-К   (2004-11-01 13:02) [0]

Есть два документа:
1.
<root>
<item1>
 ...
</item1>
</root>

2.
<root>
<item2>
 ...
</item2>
</root>

Нужно получить:

<root>
<item1>
 ...
</item1>
<item2>
 ...
</item2>
</root>

Вообщем два документа у которых общий только корневой тег.
Есть ли какие "штатные" способы функции объединения?


 
DiamondShark ©   (2004-11-01 13:17) [1]

Есть.
1. DOM
2. XSLT
Вам каких?


 
Ш-К   (2004-11-01 13:21) [2]

DiamondShark ©   (01.11.04 13:17) [1]
DOM
Собст-но, я могу только переварить через стринги.
Что, думаю, не есть хорошо.


 
DiamondShark ©   (2004-11-01 13:36) [3]

для msxml:

elt := doc2.documentNode.firstChild;
while elt <> nil do
 begin
   doc1.documentElement.appendChild(elt);
   elt := elt.nextSibling;
 end;


 
Ш-К   (2004-11-01 14:50) [4]

Прошу прощения. Что-то не могу заставить работать.

function Union_Roots(S1, S2: WideString): WideString;
var
 elt: IXMLDOMNode;
 iDoc1, iDoc2: IXMLDOMDocument;
begin
 iDoc1 := CoDOMDocument.Create;
 iDoc2 := CoDOMDocument.Create;
 iDoc1.loadXML(S1);
 iDoc2.loadXML(S2);
 elt := iDoc2.documentElement.firstChild;
 while elt <> nil do
   begin
     iDoc1.documentElement.appendChild(elt);
     elt := elt.nextSibling;
   end;
 Result := iDoc1.xml;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 S1, S2: String;
begin              
 S1 := "<root><item0/><item1/></root>";
 S2 := "<root><item2/><item3/><item4/></root>";
 S1 := Union_Roots(S1, S2);
 Memo1.Lines.Text := s1;
end;


 
DiamondShark ©   (2004-11-01 15:17) [5]

Пардон.

elt := iDoc2.documentElement.firstChild;
while elt <> nil do
 begin
   iDoc1.documentElement.appendChild(elt);
   elt := iDoc2.documentElement.firstChild;
 end;

После append-а у него уже другой родитель, и, следовательно, совсем другие сиблинги ;)


 
Ш-К   (2004-11-01 15:24) [6]

Спасибо. Заработало.



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

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

Наверх




Память: 0.47 MB
Время: 0.045 c
14-1098547072
ДоздраПерМа
2004-10-23 19:57
2004.11.14
Сколько лет надо учиться программировать?


1-1099401216
Kat
2004-11-02 16:13
2004.11.14
Существует ли функция, которая по русски возвращает месяц


14-1098869396
X-Disa
2004-10-27 13:29
2004.11.14
Пишу графический редактор...


14-1098797323
oldman
2004-10-26 17:28
2004.11.14
помогите, плиз...


1-1099319598
Kat
2004-11-01 17:33
2004.11.14
Как Word преобразовать в String?