在没有实际输入'数学','physics'或'technologija'的情况下使用SelectSingleNode
以便我可以使用任何条目阅读它吗?使用XmlDocument节点列表读取XML文件
到目前为止,阅读是这样的:
XmlNodeList nodelist = xd.SelectNodes("/studentai/Evening");
foreach (XmlNode node in nodelist)
{
Student tc = new Student();
tc.id = node.Attributes.GetNamedItem("id").Value;
tc.name = node.Attributes.GetNamedItem("name").Value;
XmlNode n = node.SelectSingleNode("grades");
tc.grade1 = n.ChildNodes.Item(0).InnerText;
...
而且,由于有“晚报”和“天”的学生,我应该使用其他节点列表/的foreach(XmlNodeList nodelist = xd.SelectNodes("/students/Evening");
)读他们,或者我可以以某种方式结合/students/Evening
和students/Day
?
XML文件:
<?xml version="1.0" encoding="utf-8" ?>
<students>
<Evening id="36453" name="Petras">
<grades>
<math>
<grade1>5</grade1>
<grade2>7</grade2>
</math>
<technologija>
<grade1>8</grade1>
<grade2>4</grade2>
</technologija>
</grades>
<average>6.00</average>
</Evening>
<Day id="75643" name="Jonas">
<grades>
<math>
<grade1>8</grade1>
<grade2>7</grade2>
</math>
<physics>
<grade1>7</grade1>
<grade2>10</grade2>
</physics>
</grades>
<average>8</average>
</Day>
<Day id="48843" name="Andrius">
<grades>
<math>
<grade1>5</grade1>
<grade2>5</grade2>
</math>
<physics>
<grade1>5</grade1>
<grade2>7</grade2>
</physics>
</grades>
<average>5.50</average>
</Day>
<Evening id="56442" name="Antanas">
<grades>
<math>
<grade1>8</grade1>
<grade2>8</grade2>
</math>
<technologija>
<grade1>8</grade1>
<grade2>10</grade2>
</technologija>
</grades>
<average>8.50</average>
</Evening>
</students>
我建议使用XDocument来给你访问linq。这也是你的XML或者你的XML结构可以改变。它不是你的问题,我错了,它的xml结构留下了许多不足之处。 – DidIReallyWriteThat 2014-10-10 17:31:51
XML不会改变(至少结构不会,但可能会有更多的学生)。我不得不使用所有东西。然而,我不知道的是,我应该如何选择节点的“数学”和“物理学”而不真正知道它们的名称(不能输入SelectSingleNode(“physics”); – GytisK 2014-10-10 17:34:52
@Calvin Smith Linq是不错的选择,但是,在之前的VS C#版本中没有... – umlcat 2014-10-10 19:13:37