-2

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

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

2 回答 2

3

ifidstudent元素的属性

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

好吧,您可以使用它string.Format来创建 XPath 表达式,如 LB 的回答所示。

我个人不会——我会使用 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,您可以将XElementto 转换intstring。)

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

于 2012-11-29T14:40:34.750 回答