2

id (XML 要素) の値に基づいて if ステートメント ブロックを作成するにはどうすればよいですか?

string filepath = Server.MapPath("XMLFile2.xml");

XmlDocument xdoc1 = new XmlDocument();
xdoc1.Load(filepath);

XmlNode root = xdoc1.DocumentElement;
XmlNode idNode = root.SelectSingleNode("/students/student/id");

   if (idNode.Value == 1.ToString()){my code}

このコードがファイル内の最初のノードを選択するのではないかと心配しています。または、ID 値に基づいてノードを選択できる別の方法がありますか????

4

2 に答える 2

3

このコードを置き換えます

前のコード

XmlNode idNode = root.SelectSingleNode("/students/student/id");

新しいコード

XmlNode idNode = root.SelectSingleNode("//students/student/id");

そして、ほとんどの場合、以下を使用するよりもidの値に基づいてノードを検索したい場合.

XmlNode idNode = root.SelectSingleNode("//students/student/[id='"+<YOUR id>+"']");

それが動作します...

于 2012-11-29T08:07:04.140 に答える
1

使用できますLINQ2XML

XElement doc =XElement.Load(filepath);
var xpath = String.Format("//students/student/[id='{0}']", "1");
                                                            -
                                                            |->your ID value goes here
var StudentNodeWithID1= doc.XPathSelectElement(xpath);
//selects a single student node with id as 1 or would return NULL if there are no students with id as 1

また

var StudentNodeWithID1= doc.Elements("student")
                           .Where(s => s.Element("id").Value == "1")
                           .SingleOrDefault();

StudentNodeWithID1.Element("id");//id node
StudentNodeWithID1.Element("id").Value;//id value
于 2012-11-29T08:01:57.340 に答える