-2

この SelectSingleNode ステートメントで変数を使用する方法

   oldCd = root.SelectSingleNode("/students/student[id={0}]",id);
4

2 に答える 2

3

要素idの属性である場合student

root.SelectSingleNode(String.Format("//students/student[@id='{0}']",id))

サブ要素の場合

root.SelectSingleNode(String.Format("//students/student[id[text()='{0}']]",id))
于 2012-11-29T14:42:35.813 に答える
2

LBの回答に示されているように、XPath式を作成するために使用できます。string.Format

個人的にはそうしませんが、LINQ to XML を使用します。これは、XPath を使用する場合ほどコードとデータを混在させません。これは、SQL インジェクション攻撃の通常のソースと同じ問題を引き起こします。

LINQ to XML クエリは次のようになります。

var node = doc.Root.Elements("Students")
                   .Elements("Student")
                   .Where(x => (string) x.Element("id") == id)
                   .SingleOrDefault();

(idが の場合、 の代わりに をキャストintできます。)XElementintstring

私は通常、XPath を使用するよりも LINQ to XML を使用してクエリを実行することを好みます。もちろん、他の人は異なる好みを持っています。

于 2012-11-29T14:40:34.750 に答える