我关注此帖子,因为它与我的相似:* 这就是我的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个级别。 (未包括其他两个级别)。
这就是我目前获取Level模块和赋值的详细信息:
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条件有问题,但我可以看到在哪里。
答案 0 :(得分:0)
尝试在表达式中添加根节点。 "/Course/Level4/Module"