Главная страница
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.04 c
1-1099053212
Vadik2k
2004-10-29 16:33
2004.11.14
Как перехватить изменение размеров кнопки


3-1098171282
ZedeS
2004-10-19 11:34
2004.11.14
Фильтрация в ADOTable


6-1092936315
Фёдор Мегатронов
2004-08-19 21:25
2004.11.14
Две функции возвращают белеберду в место размера файла в инете


14-1098790632
Мирон
2004-10-26 15:37
2004.11.14
Помогите с Novell ом


9-1081771079
maxim
2004-04-12 15:57
2004.11.14
Зацените игрушку