c#和XML的递归函数

本文关键字:递归函数 XML | 更新日期: 2023-09-27 18:08:59

我有一个XML文件:

<node ID="1" query="query 1" dbQuery="aaa">
    <node ID="2" query="query 2" dbQuery="bbb"></node>
    <node ID="3" query="query 3" dbQuery="aaa"></node>
    <node ID="4" query="query 4" dbQuery="ccc"></node>
        <node ID="5" query="query 5" dbQuery="ddd">
            <node ID="6" query="query 6" dbQuery="eee"></node>
        </node>
</node>

,我试着用这个函数来读取:

private void ProcessaSottoNodi(XmlNode node)
{
    if (node.HasChildNodes)
    {
        foreach (XmlNode cNode in node.ChildNodes)
        {
            Console.WriteLine("{0}", cNode.Name);
            foreach (XmlAttribute attr in cNode.Attributes)
               Console.WriteLine("{0}", attr.Name + " = " + attr.InnerText);
            Console.WriteLine("-------------------------------");
        ProcessaSottoNodi(cNode);
        }
    }
}

,这很好,但如果我通过添加"TextB", "TextC", "TextF"改变XML文件是在错误函数

<node ID="1" query="query 1" dbQuery="aaa">
    <node ID="2" query="query 2" dbQuery="bbb">TextB</node>
    <node ID="3" query="query 3" dbQuery="ccc">TextC</node>
    <node ID="4" query="query 4" dbQuery="ddd">TextD</node>
        <node ID="5" query="query 5" dbQuery="eee">
            <node ID="6" query="query 6" dbQuery="fff">TextF</node>
        </node>
</node>

如何改变我的功能,能够读取属性和InnerText没有错误?

谢谢

c#和XML的递归函数

要获取xml标签的innerText,您需要做如下操作:

Console.Write(cNode.InnerText);

我添加的代码将打印出cNode的InnerText,其中cNode是您的XmlNode-Object

问题不在控制台中。WriteLine但

foreach (XmlAttribute attr in cNode.Attributes)

InnerText不是Attribute的属性,而是Node