C# XML文档的顺序错误
我通过读取示例选项卡分隔的文档来构建代码自动化。我的xml文档结构订单已取消。我的逻辑有什么问题?我看到两种情况可以找到xml节点的正确父节点C# XML文档的顺序错误,c#,automation,code-generation,C#,Automation,Code Generation,我通过读取示例选项卡分隔的文档来构建代码自动化。我的xml文档结构订单已取消。我的逻辑有什么问题?我看到两种情况可以找到xml节点的正确父节点 for (int lines = 0; lines < files.Length; lines++) //start { var firstNode = files[lines].TrimEnd('\t'); NodeNames.Add(files[lines].Replace("\t","") + lines); le
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;
}
}
}
for(int-lines=0;lineslevels[levels.Count-2])
{
//创建新的ele
newXml++=“XmlNode”+节点名称[行]+“Node”+“=xmlDoc.CreateElement(\”“+文件[行])。替换(“\t”,”)+“\”;“+System.Environment.NewLine;
//将值设置为空
newXml+=NodeNames[lines]+“Node”+”.InnerText=String.Empty;“+System.Environment.NewLine;
//将新ele作为子项添加到以前的ele
newXml+=NodeNames[lines-1]+“Node”+”.AppendChild(“+NodeNames[lines]+“Node”+”);“+System.Environment.NewLine;
}
其他的
{
//创建新的ele
newXml++=“XmlNode”+节点名称[行]+“Node”+“=xmlDoc.CreateElement(\”“+文件[行])。替换(“\t”,”)+“\”;“+System.Environment.NewLine;
var LASTMINIMEST=级别。计数-1;
var电流=电平[levels.Count-1];
var检查器=级别[levels.Count-1];
while(checker>=当前)
{
LASTMINISTER=LASTMINISTER-1;
棋盘格=级别[最小值];
}
//将节点值设置为空;
newXml+=NodeNames[lines]+“Node”+”.InnerText=String.Empty;“+System.Environment.NewLine;
newXml++=NodeNames[checker]+“Node”+”.AppendChild(“+NodeNames[lines]+“Node”+”);“+System.Environment.NewLine;
}
}
}
用于(int i=行;i>0;i--)
{
if(级别[i]<级别[LastMinister])
{
检查器=i;
打破
}
}
而不是while或将checker改为variable改为lastmiminate。我分配的是列表值而不是索引值请给出XML、预期输出和实际输出。奇怪的是,当您可以直接解析输入时,您为什么要编写代码来生成代码来解析输入?我的节点大小写在查看您是如何对文本进行这种漂亮的中心对齐时被打破了?
for (int i = lines; i > 0;i-- )
{
if (levels[i] < levels[lastSmallest])
{
checker = i;
break;
}
}