2009-08-13 4 views
1

У меня есть несколько XDocuments, которые выглядят как:Объединение подобных документов XML

<Test> 
    <element 
     location=".\jnk.txt" 
     status="(modified)"/> 
<element 
    location=".\jnk.xml" 
    status="(overload)"/> 
</Test> 

В C#, я создаю новый XDocument:

XDocument mergedXmlDocs = new XDocument(new XElement("ACResponse")); 

И попробуйте добавить узлы из других XDocuments:

for (ti = 0; (ti < 3); ++ti) 
{ 
    var query = from xElem in xDocs[(int)ti].Descendants("element") 
     select new XElement(xElem); 

    foreach (XElement xElem in query) 
    { 
     mergedXmlDocs.Add(xElem); 
    } 
} 

Во время выполнения я получаю сообщение о том, как Add создаст плохо сформированный документ.
Что я делаю неправильно?
Спасибо ...

(я видел этот вопрос - Merge XML documents - но создание XSLT-преобразования, казалось, как лишние хлопоты для того, что кажется простой операцией.)

+0

На каком языке вы пытаетесь это сделать? –

+0

C#. LINQ доступен ... – Number8

ответ

4

Вы очень близки. Попытка изменения линии

mergedXmlDocs.Add(xElem); 

в

mergedXmlDocs.Root.Add(xElem); 

Проблема в том, что каждый из XML-документ может содержать только 1 корневой узел. Ваш существующий код пытается добавить все узлы на корневом уровне. Вместо этого вам нужно добавить их в существующий узел верхнего уровня.

+0

Спасибо, я недостаточно хорошо посмотрел на свойства XDocument ... – Number8

0

Я не уверен, что язык программирования но для большинства языков программирования существуют обширные классы поддержки XML. Большинство из них позволяют анализировать и даже добавлять элементы. У меня было бы 1 основной файл, который я бы сохранил, а затем проанализировал каждый новый, добавляя элементы из нового в мастер.

EDIT: Извините, похоже, что вы уже делаете именно это.

+0

Вот что я пытаюсь сделать ... Добавьте все элементы «element» из нескольких XDocuments в объединенный XmlDocs XDocument. Ошибка выполнения: «Эта операция приведет к созданию неправильно структурированного документа». – Number8

Смежные вопросы