C# 无法使用XPathNavigator访问元素

C# 无法使用XPathNavigator访问元素,c#,xml,winforms,C#,Xml,Winforms,我之所以关注这篇文章,是因为它与我的类似: 以下是我的XML的外观: <?xml version="1.0"?> <Course name="engineering"> <Level4> <Module Name="electric" CreditVal="22"> <Assignment Name="wer" Score="22" Weight="50"> </Assignment>

我之所以关注这篇文章,是因为它与我的类似: 以下是我的XML的外观:

<?xml version="1.0"?>
<Course name="engineering">
<Level4>
    <Module Name="electric" CreditVal="22">
        <Assignment Name="wer" Score="22" Weight="50">
        </Assignment>
        <Assignment Name="asd" Score="50" Weight="50">
        </Assignment>
    </Module>
</Level4>
</Course>

我的xml在一个级别内可以有n次模块和分配。只有3个级别。(未包括其他两个级别)

这是我目前获取级别模块和作业详细信息的方式:

XPathDocument xpd = new XPathDocument("myXMLFile.xml");
        XPathNavigator xmln = xpd.CreateNavigator();



            //getting modules in level 4
            foreach (XPathNavigator mod in xpd.CreateNavigator().Select("/Level4/Module")) {
                //Accessing module elemtns
                if (mod.HasAttributes) {
                Module modtoadd = new Module();
                modtoadd.Name = mod.GetAttribute("Name", "");
                Console.WriteLine(modtoadd.Name);
                modtoadd.CreditValue = int.Parse(mod.GetAttribute("CreditVal", ""));
                Console.WriteLine(modtoadd.CreditValue);
                modtoadd.Assignments = new List<Assignment>();
                //Accessing assignment elements within the module element
                foreach (XPathNavigator asgn in xpd.CreateNavigator().Select("Course/Level4/Module/Assignment"))
                {
                    Assignment asn = new Assignment();
                    asn.Name = asgn.GetAttribute("Name","");
                    Console.WriteLine(asn.Name);
                    asn.Weighting = int.Parse(asgn.GetAttribute("Weight", ""));
                    Console.WriteLine(asn.Weighting);
                    asn.UsersScore = int.Parse(asgn.GetAttribute("Score", ""));
                    Console.WriteLine(asn.UsersScore);
                    modtoadd.Assignments.Add(asn);
                };
                courseXML.Level_41.Add(modtoadd);
            }

        };
XPathDocument xpd=新的XPathDocument(“myXMLFile.xml”);
XPathNavigator xmln=xpd.CreateNavigator();
//获得4级模块
foreach(xpd.CreateNavigator()中的XPathNavigator mod.Select(“/Level4/Module”)){
//访问模块元素
if(mod.HasAttributes){
Module modtoadd=新模块();
modtoadd.Name=mod.GetAttribute(“名称”,“名称”);
Console.WriteLine(modtoadd.Name);
modtoadd.CreditValue=int.Parse(mod.GetAttribute(“CreditVal”),“”);
控制台写入线(modtoadd.CreditValue);
modtoadd.Assignments=新列表();
//访问模块元素内的分配元素
foreach(xpd.CreateNavigator()中的XPathNavigator asgn.Select(“课程/级别4/模块/作业”))
{
分配asn=新分配();
asn.Name=asgn.GetAttribute(“名称”,“名称”);
Console.WriteLine(asn.Name);
asn.Weighting=int.Parse(asgn.GetAttribute(“权重”);
控制台写入线(asn.加权);
asn.UsersScore=int.Parse(asgn.GetAttribute(“Score”,“Score”));
Console.WriteLine(asn.UsersCore);
modtoadd.Assignments.Add(asn);
};
courseXML.Level_41.Add(modtoadd);
}
};

我可以写入文件,但无法读取。在调试时,我注意到它检查了foreach条件,但没有验证为true,因此它没有到达foreach循环中的任何代码,因此很明显,我的foreach条件中存在错误,但我可以看到错误所在

尝试在表达式中添加根节点
“/Course/Level4/Module”

尝试在表达式中添加根节点
“/Course/Level4/Module”

或以//谢谢它能工作:)开头的表达式真不敢相信我忘了那个基本的东西。在这上面花了太多时间:(或者用//Thank it works:)开始表达)真不敢相信我忘了那个基本的东西。在这方面花了太多时间:(