如何在SelectSingleNode语句中使用变量
oldCd = root.SelectSingleNode("/students/student[id={0}]",id);
答案 0 :(得分:3)
如果id
是student
元素的属性
root.SelectSingleNode(String.Format("//students/student[@id='{0}']",id))
如果是子元素
root.SelectSingleNode(String.Format("//students/student[id[text()='{0}']]",id))
答案 1 :(得分:2)
好吧,你可以使用string.Format
来创建XPath表达式,如L.B的回答所示。
我个人不会 - 我会使用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;当然,其他人有不同的偏好。