2017-05-13 22 views
2

APIコールを使用してXMLファイルを生成した後、ssisのXMLソースコンポーネントを使用してファイルを読み込もうとしましたが、 。既存のxmlファイルの先頭と末尾にノードを追加するC#

ここに私のファイル

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

しかし、私は我々は、単一のファイルのためではなく、数千個のファイル

<?XML Version 1.0> 
<X> 
    <ABC> 
     <a>info <a/> 
    <ABC/> 
</X> 
ために手動でファイルを操作することができる唯一の私は簡単にコンポーネント を使用してファイルを読み込むことができ、その後、以下のようなファイルたいです

既存のファイルに 'X'ノードを追加する方法。

私は.Netテクノロジにあまり晒されていません。

早く私を助けてください。

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

ありがとうございます。

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)) 
0

APIをストリーミングしてみたXML LINQを使用します KiranKumar

関連する問題