使用c#在现有xml文件的开头和结尾添加节点

时间:2017-05-13 05:18:05

标签: c# xml ssis

我通过API调用生成了一个XML文件,然后我尝试使用ssis中的XML源组件读取该文件,但它是只读数据集,除了文件中包含的所有数据。

这是我的档案

<?XML version 1.0 >
 <ABC>
      <a>info<a/>
 <ABC/>

但我想要下面的文件只有我可以使用组件轻松读取文件 我们可以手动操作单个文件的文件,但不能操作千个文件

<?XML Version 1.0>
<X>
  <ABC>
      <a>info <a/>
  <ABC/>
</X>

如何将“X”节点添加到现有文件中。

我对.Net技术的曝光度不高。

请在最早的时候帮助我。

谢谢 KiranKumar

2 个答案:

答案 0 :(得分:1)

使用xml linq

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string xml =
                "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" +
                    "<ABC>" +
                        "<a>info</a>" +
                    "</ABC>";
            XDocument doc = XDocument.Parse(xml);

            XElement root = doc.Root;
            root.ReplaceWith(new XElement("X", root));
        }
    }
}

答案 1 :(得分:0)

尝试使用流媒体API。

using (var reader = XmlReader.Create("test.xml"))
using (var writer = XmlWriter.Create("test2.xml"))
{
    writer.WriteStartElement("X");
    reader.MoveToContent();
    writer.WriteNode(reader.ReadSubtree(), true);
    writer.WriteEndElement();
}

这种方法可以处理xml而不会消耗过多的内存。

此外,此方法允许动态修改xml,从输入API流中获取它并写入输出流。

using (var reader = XmlReader.Create(inputStream))
using (var writer = XmlWriter.Create(outputStream))