2012-03-20 5 views
2

L'extrait de code suivant renvoie le document xmlmodifier xml à la volée

public XmlDocument GetXMLFile(int ID) 
     { 

      List<UserInfoBE> data = GetById(ID); 
      DataSet ds = ConvertGenericsListToDataSet(data); 
      XmlDocument XmlDoc = new XmlDocument(); 
      XmlDocument doc = GenerateXMLDeclaration(XmlDoc);//Create xml Declaration 
      doc = AddTableTag(doc);//Create parent node USERDATA 

      foreach (DataRow dr in ds.Tables[0].Rows) 
      { 
       doc = AddUserinfoTag(doc, dr[8].ToString(), Convert.ToInt32(dr[31].ToString()), Convert.ToString(dr[32].ToString()), dr[3].ToString()); 
      } 

      doc = SetHeirarchyLevel(doc); 
      string _errorFile = AppDomain.CurrentDomain.BaseDirectory + "XML\\"; 
      System.IO.Directory.CreateDirectory(_errorFile); 
      _errorFile += "FIle" + DateTime.Now.ToString("dd-MM-yyyy") + ".xml"; 
      XmlNodeList nodes = doc.SelectNodes("USERDATA/Userinfo"); 
      XmlDocument newXMLDoc = new XmlDocument(); 
      XmlDocument newDoc = GenerateXMLDeclaration(newXMLDoc); 
      newDoc.AppendChild(nodes);    
      doc.Save(_errorFile); 
      return doc; 
     } 

format de fichier XML:

<?xml version="1.0"?> 
<USERDATA> 
    <Userinfo> 
    <Userinfo> 
     <Userinfo> 
     <Userinfo> 
      <Userinfo> 
      <Userinfo/> 
      <Userinfo> 
       <Userinfo/> 
      </Userinfo> 
      </Userinfo> 
      <Userinfo> 
      <Userinfo/> 
      <Userinfo/> 
      </Userinfo> 
     </Userinfo> 
     </Userinfo> 
    </Userinfo> 
    </Userinfo> 
</EDVDATA> 

Question Comment fichier obtenir au format suivant

<Userinfo> 
     <Userinfo> 
      <Userinfo> 
      <Userinfo> 
       <Userinfo> 
       <Userinfo/> 
       <Userinfo> 
        <Userinfo/> 
       </Userinfo> 
       </Userinfo> 
       <Userinfo> 
       <Userinfo/> 
       <Userinfo/> 
       </Userinfo> 
      </Userinfo> 
      </Userinfo> 
     </Userinfo> 
     </Userinfo> 

Ce que je J'ai essayé enregistre l'objet doc de retour (fichier Xml) dans un dossier. puis créé un nouvel objet xmldocument et tente d'ajouter Xmlnodelist quelle structure userinfo (juste au-dessus) dans le nouvel objet xml

newDoc.AppendChild (nodes); ligne renvoie une erreur

ne peut pas convertir « System.Xml.XmlNodeList » à « System.Xml.XmlNode »

toute aide est très appréciée.

Répondre

1

Vous essayez d'ajouter plusieurs nœuds, mais la fonction prend un nœud unique à ajouter à la fois. Essayez ceci:

foreach(XmlNode node in nodes) 
{ 
    newDoc.AppendChild(node); 
} 
+0

Merci, vous êtes bonne méthode Appenchild attend seul nœud. – masif

0

a résolu le problème comme celui-ci,

publique XmlDocument GetXMLFile (ID int) {

 List<UserInfoBE> data = GetById(ID); 
     DataSet ds = ConvertGenericsListToDataSet(data); 
     XmlDocument XmlDoc = new XmlDocument(); 
     XmlDocument doc = GenerateXMLDeclaration(XmlDoc);//Create xml Declaration 
     doc = AddTableTag(doc);//Create parent node USERDATA 

     foreach (DataRow dr in ds.Tables[0].Rows) 
     { 
      doc = AddUserinfoTag(doc, dr[8].ToString(), Convert.ToInt32(dr[31].ToString()), Convert.ToString(dr[32].ToString()), dr[3].ToString()); 
     } 

     doc = SetHeirarchyLevel(doc); 
     XmlNodeList nodes = doc.SelectNodes("USERDATA/Userinfo"); 
     XmlDocument newXMLDoc = new XmlDocument(); 
     XmlDocument newDoc = GenerateXMLDeclaration(newXMLDoc); 
     foreach (XmlNode node in nodes) 
     { 
      newDoc.AppendChild(newDoc.ImportNode(node,true)); 
     } 
     return newDoc; 
    } 
Questions connexes