在沒有實際輸入'數學','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