XmlReader,XmlWriter - 使用流连接xmlFiles

时间:2016-03-08 13:01:54

标签: c# xml xmlreader memorystream xmlwriter

我有一些返回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);
                   }
              }
          }

     }

我需要在不使用字符串的情况下执行此操作,因为我必须处理大文件。

1 个答案:

答案 0 :(得分:2)

如果您不想使用字符串,那么为什么要使用ReadOuterXmlWriteRaw?有一种方法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)。

相关问题