我想知道我是否可以在选择节点语句ex:
时使用变量Pgs = xmldoc.SelectNodes("/* [@Id = 160578]")
我需要用变量替换这个160578号码吗?
答案 0 :(得分:0)
天真(并且易于注射)是字符串操作,例如xmlDoc.SelectNodes(String.Format("/*[@Id = {0}]", yourVariable))
。正确的方法是使用SelectNodes的第二个参数,并在XsltContext
https://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltcontext(v=vs.110).aspx的实现中实现变量解析。项目https://mvpxml.codeplex.com/releases/view/4894有一个类DynamicContext
这样做,虽然该项目是用C#完成的,你当然可以用VS编译它并将API集成到你的VB代码中:
Dim idVar As Double = 160578
Dim dynContext As New DynamicContext
dynContext.AddVariable("id", idVar)
Pgs = xmldoc.SelectNodes("/*[@Id = $id]", dynContext)