首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用XPathNavigator访问元素

无法使用XPathNavigator访问元素
EN

Stack Overflow用户
提问于 2016-04-20 01:18:48
回答 1查看 20关注 0票数 1

我之所以关注这篇文章,是因为它与我的类似:*这是我的XML的样子:

代码语言:javascript
复制
<?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个级别。(没有包括其他两个级别)。

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

代码语言:javascript
复制
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);
            }

        };

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

EN

回答 1

Stack Overflow用户

发布于 2016-04-20 01:29:20

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36725236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档