我正在尝试在单个XDocument对象中合并多个XML文件。
XDocument对象中不存在合并。我想念这个。
是否有人已经为XDocument实现了Merge扩展方法,或类似的东西?
答案 0 :(得分:24)
我自己尝试了一下:
var MyDoc = XDocument.Load("File1.xml");
MyDoc.Root.Add(XDocument.Load("File2.xml").Root.Elements());
我不知道它是好还是坏,但它对我来说很好: - )
答案 1 :(得分:3)
务实,XDocument
vs XmLDocument
不是全有或全无(除非你在Silverlight上) - 所以如果XmlDoucument
做了你需要的事情,{{1}然后,可能会使用XDocument
(与XmlDocument
等)。
也就是说,即使使用ImportNode
,您也可以使用XDocument
导入每个,然后只需XNode.ReadFrom
将其导入主集合。
当然,如果文件很大,.Add
可能更有效......但更复杂。幸运的是,XmlReader/XmlWriter
有XmlWriter
方法接受WriteNode
,因此您可以导航到XmlReader
中的第一个子项,然后将其闪烁到输出文件中。类似的东西:
XmlReader
答案 2 :(得分:3)
将所有xml文件从dir合并到一个XDocument
public static XDocument MergeDir(string xmlDir)
{
XDocument xdoc = XDocument.Parse("<root></root>");
System.IO.DirectoryInfo directory = new DirectoryInfo(xmlDir);
if (directory.Exists)
{
foreach (System.IO.FileInfo file in directory.GetFiles())
{
if (file.Extension == ".xml")
{
xdoc.Root.Add(XDocument.Load(file.FullName).Root.Elements());
}
}
}
return xdoc;
}
答案 3 :(得分:0)
作为一种变通方法,您可以使用XSL文件合并XML文件,然后将其转换为XDocument对象。