我还在开始使用XML文件。我想用XML创建目录,我有这个功能:
RunCommand是一个执行comanda_cmd的函数 第一个,第二个是字符串
private void ProcesNode(XmlNode node, string parentPath, string path, string first, string second, string BuiltUnit, string item)
{
if (!node.HasChildNodes || ((node.ChildNodes.Count == 2) && (node.FirstChild is System.Xml.XmlText)))
{
//MessageBox.Show(parentPath + "/" + node.Name);
}
else
{
foreach (XmlNode child in node.ChildNodes)
{
comanda_cmd = first + "/" + parentPath + second + "/" + parentPath + "/" + node.Name;
string status = RunCommand(comanda_cmd + "/project.pj /n");
//content = "_GEN_PROJECT/" + ProjectName + "/" + BuiltUnit + "/" + item + "/" + parentPath + "/" + node.Name + " already exist";
//MessageBox.Show(content);
//check_status(status, content);
ProcesNode(child, parentPath + "/" + node.Name, path, first, second, BuiltUnit, item);
}
}
}
我有这个XML:
<unit>
<Unit1>
<src>
<i>
<test1>
<test_in1>
<test_in_out>
<t>
</t>
</test_in_out>
</test_in1>
</test1>
<test2>
<test_in2>
</test_in2>
</test2>
</i>
</src>
<doc>
<i>
<test1>
<test_in1>
<test_in_out>
<t>
</t>
</test_in_out>
</test_in1>
</test1>
<test2>
<test_in2>
</test_in2>
</test2>
</i>
</doc>
</Unit1>
<Unit2>
<src>
<i>
</i>
</src>
</Unit2>
</unit>
我调用ProcesNode,它会创建目录。例如:unit / Unit1 / src / i / test1 / test_in1 / test_in_out 但是没有创建最后一个目录(在我的情况下&#34; t&#34;)。
我哪里错了?为什么不创建最后一个目录?
答案 0 :(得分:0)
最低级别的标记(如<t>
标记)没有任何子节点。
Thatswhy你的if
陈述
if (!node.HasChildNodes || ((node.ChildNodes.Count == 2) && (node.FirstChild is System.Xml.XmlText)))
是true
(因为!node.HasChildNodes
是true). So for the tags on the last level you never enter the
else`阻止(可能)创建目录。
看来你可以简单地把那部分(!node.HasChildNodes ||
)留下来。如果没有子节点,则不会输入foreach
循环。