2012-02-13 101 views
0

我有一个xml文档,并希望在其底部追加另一个xml。在.NET中使用xml类,做到这一点的最快方法是什么(在3.5中)?将xml文档追加到现有的xml文档的底部

谢谢

+0

我尝试了一些与节点等工作的东西,但乔恩的建议(下面)是更可读和明显的意图。 – dotnetdev 2012-02-13 10:34:34

回答

1

最快最快,最快还是最快?例如:

XDocument doc1 = XDocument.Load(...); 
XDocument doc2 = XDocument.Load(...); 

// Copy the root element of doc2 to the end of doc1 
doc1.Root.Add(doc2.Root); 
doc1.Save(...); 

或者,你可以希望

// Copy the *contents* of the root element of doc2 to the end of doc1 
doc1.Root.Add(doc2.Root.Descendants()); 

如果你能更精确地了解您的需求,我们也许能帮助更多。请注意,XML文档只能有一个根元素,因此您不能只将一个文档放在另一个文档之后。

+0

我的意思是效率明智,但这是一个优雅的解决方案。 – dotnetdev 2012-02-13 10:34:52

+0

@dotnetdev:那么试试看,看看它是否足够有效,你想做什么。在测试简单版本之前,不要开始编写更高效但更少可读的代码。 – 2012-02-13 10:36:13

1

我怀疑你将能够使用XML类来做到这一点。 XML库通常旨在防止您创建格式错误的XML,并且两个XML文档的连接将会很差,因为文档节点将有两个子元素。

如果.Net库确实允许你这样做,我建议你将它作为一个错误提升。

0
var xml = new XmlDocument(); 
xml.AppendChild(...); 
xml.PrependChild(...); 
0

如果你真的要添加的最快方法是逐行读取文件的第一行,并把它添加到第二个文件第二根节点。这是一个非常肮脏的方式,你会得到一个无效的 xml文件!

System.IO.StreamWriter file1 = System.IO.File.AppendText(path); 
System.IO.StreamReader file2 = new System.IO.StreamReader(path2) 

while(!file2.EndOfStream) 
{ 
    file1.WriteLine(file2.ReadLine()); 
} 

file1.Close(); 
file2.Close(); 

我甚至不喜欢这个解决方案!