この SelectSingleNode ステートメントで変数を使用する方法
oldCd = root.SelectSingleNode("/students/student[id={0}]",id);
この SelectSingleNode ステートメントで変数を使用する方法
oldCd = root.SelectSingleNode("/students/student[id={0}]",id);
要素id
の属性である場合student
root.SelectSingleNode(String.Format("//students/student[@id='{0}']",id))
サブ要素の場合
root.SelectSingleNode(String.Format("//students/student[id[text()='{0}']]",id))
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
できます。)XElement
int
string
私は通常、XPath を使用するよりも LINQ to XML を使用してクエリを実行することを好みます。もちろん、他の人は異なる好みを持っています。