2013-02-28 1 views
0

Je construis de l'automatisation de code à partir de la lecture d'un document délimité par un onglet. Ma commande est désactivée pour la structure de document xml. Quel est le problème avec ma logique? Je vois deux cas pour trouver le parent correct du noeud xml.Mauvaise commande de xmldocument

for (int lines = 0; lines < files.Length; lines++) //start 
{ 
    var firstNode = files[lines].TrimEnd('\t'); 
    NodeNames.Add(files[lines].Replace("\t","") + lines); 

    levels.Add(TextTool.CountStringOccurrences(firstNode, "\t")); //first count 
    if (lines == 0) 
    { 
     newXml += "XmlNode " + NodeNames[lines] + "Node" + " = xmlDoc.CreateElement(\"" + files[lines].Replace("\t", "") + "\");" + System.Environment.NewLine; 
     //set value to empty 
     newXml += NodeNames[lines] + "Node" + ".InnerText = String.Empty;" + System.Environment.NewLine; 
     newXml += "xmlDoc.AppendChild(" + NodeNames[lines] + "Node);" + System.Environment.NewLine; 

    } 
    else{ 
     if (levels[levels.Count - 1] > levels[levels.Count - 2]) 
     { 
      //create new ele 
      newXml += "XmlNode " + NodeNames[lines] + "Node" + " = xmlDoc.CreateElement(\"" + files[lines].Replace("\t", "") + "\");" + System.Environment.NewLine; 
      //set value to empty 
      newXml += NodeNames[lines] + "Node" + ".InnerText = String.Empty;" + System.Environment.NewLine; 
      //add new ele as child to previous ele 
      newXml += NodeNames[lines - 1] + "Node" + ".AppendChild(" + NodeNames[lines] + "Node" + ");" + System.Environment.NewLine; 
     } 
     else 
     { 
      //create new ele 
      newXml += "XmlNode " + NodeNames[lines] + "Node" + " = xmlDoc.CreateElement(\"" + files[lines].Replace("\t", "") + "\");" + System.Environment.NewLine; 
      var lastSmallest = levels.Count - 1; 
      var current = levels[levels.Count - 1]; 
      var checker = levels[levels.Count - 1]; 
      while (checker >= current) 
      { 
       lastSmallest = lastSmallest - 1; 
       checker = levels[lastSmallest]; 
      } 
      //set node value to empty; 
      newXml += NodeNames[lines] + "Node" + ".InnerText = String.Empty;" + System.Environment.NewLine; 
      newXml += NodeNames[checker] + "Node" + ".AppendChild(" + NodeNames[lines] + "Node" + ");" + System.Environment.NewLine; 

     } 
    } 
} 
+0

Veuillez donner le XML, la sortie attendue et la sortie réelle. –

+1

Curieux pourquoi écrivez-vous du code pour générer du code pour analyser votre entrée lorsque vous pouvez analyser l'entrée directement? –

+0

mon nœud égal cas est cassé à regarder –

Répondre

0
    for (int i = lines; i > 0;i--) 
        { 
         if (levels[i] < levels[lastSmallest]) 
         { 
          checker = i; 
          break; 
         } 
        } 

au lieu de tout ou changer vérificateur à la variable à lastsmallest. J'assignais la valeur des listes non la valeur d'index

+0

Comment avez-vous fait ce centre sympa alignement du texte? –