2009-08-13 71 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

你想要做什么语言? – 2009-08-13 21:24:24

+0

C#。 LINQ是可用的... – Number8 2009-08-13 21:25:05

回答

4

你非常接近。试图改变线

mergedXmlDocs.Add(xElem); 

mergedXmlDocs.Root.Add(xElem); 

的问题是,每个XML文档只能包含1个根节点。您现有的代码正在尝试添加根级别的所有节点。您需要将它们添加到现有的顶级节点中。

+0

谢谢,我对XDocument的属性没有深入了解...... – Number8 2009-08-13 21:50:38

0

我不知道什么编程语言,你正在使用,但对于大多数编程语言来说,都有大量的XML支持类。它们大多允许解析甚至添加元素。我会有一个主要的文件,我会保留,然后解析每个新的元素,并将新元素添加到主元素中。

编辑:对不起,它看起来像你已经这样做。

+0

这就是我想要做的......将所有'元素'元素从几个XDocuments添加到mergedXmlDocs XDocument。 运行时错误是:“此操作会创建结构错误的文档。” – Number8 2009-08-13 21:29:22