2017-05-13 1 views
2

J'ai généré un fichier XML par appel API puis j'ai essayé de lire le fichier en utilisant le composant source XML dans ssis mais il est en lecture seule, sauf toutes les données contenues dans le fichier .Ajouter un noeud au début et à la fin du fichier xml existant en utilisant C#

Voici mon fichier

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

Mais je veux le fichier comme ci-dessous alors que je peux facilement lire le fichier en utilisant le composant Nous pouvons manipuler le fichier manuellement pour seul fichier, mais pas pour mille fichiers

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

Comment ajouter ce noeud 'X' au fichier existant. Je n'ai pas beaucoup d'exposition sur la technologie .Net.

Veuillez m'aider le plus tôt possible.

Merci Vous KiranKumar

Répondre

1

aide 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)); 
     } 
    } 
} 
0

Essayez le streaming 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(); 
} 

Cette approche gère le format XML sans consommation excessive de mémoire.

En outre, cette méthode permet de modifier xml à la volée, en l'obtenant à partir du flux API d'entrée et en l'écrivant dans le flux de sortie.

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