我有一些返回xml文件的过程。
是否可以仅使用流连接多个xml文件?
类似的东西:
XmlWriter writer = XmlWriter.Create(sb,settings)
{
foreach(var cmd in XmlFiles)
{
using (XmlReader r = cmd.ExecuteXmlReader())
{
while (r.Read())
{
string xml = r.ReadOuterXml();
writer.WriteRaw(xml);
}
}
}
}
我需要在不使用字符串的情况下执行此操作,因为我必须处理大文件。
答案 0 :(得分:2)
如果您不想使用字符串,那么为什么要使用ReadOuterXml
和WriteRaw
?有一种方法WriteNode
消耗传入的XmlReader
,例如。
string[] inputFiles = { "XMLFile1.xml", "XMLFile2.xml" };
using (XmlWriter xw = XmlWriter.Create("result.xml"))
{
xw.WriteStartDocument();
xw.WriteStartElement("root");
foreach (string inputFile in inputFiles)
{
using (XmlReader xr = XmlReader.Create(inputFile))
{
xr.MoveToContent();
xw.WriteNode(xr, true);
}
}
xw.WriteEndElement();
xw.WriteEndDocument();
将创建一个新的XML文档,其中包含两个XML文件内容的root
元素。
在您的代码中,您可以使用
foreach(var cmd in XmlFiles)
{
using (XmlReader r = cmd.ExecuteXmlReader())
{
r.MoveToContent();
writer.WriteNode(r, false);
}
}
只要您确保输出根元素包装器(或者使用XmlWriter和XmlWriterSettings以及ConformanceLevel.Fragment)。