我如何在SelectSingleNode语句中使用变量

时间:2012-11-29 14:37:51

标签: c# xml selectsinglenode

如何在SelectSingleNode语句中使用变量

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

2 个答案:

答案 0 :(得分:3)

如果idstudent元素的属性

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();

(如果idint,您可以将XElement转换为int而不是string。)

我通常更喜欢使用XPath查询LINQ to XML;当然,其他人有不同的偏好。