大家好,我想读单个xml, 希望通过一个变量动态读取不同的内容。部分system.xml
<System IDREF="INI_System_01">
<workflow>aaaaa</workflow>
...
<System IDREF="INI_System_02">
<workflow>bbbbb</workflow>
...
<System IDREF="INI_System_03">
<workflow>cccc</workflow>
...
//定义变量。中间的程序会修改这个变量
private string sSelSystemName = "System_01";// 通过xpath读取 xml.
XmlDocument tuningXDoc = new XmlDocument();
tuningXDoc.Load("System.xml");
XmlNodeList workfrowNodeList = tuningXDoc.SelectNodes("/System[@IDREF = string($sSelSystemName)]/*") ;可是始终读不到数据。 请问各位大虾。这个xpath该如何写? 不胜感激。
<System IDREF="INI_System_01">
<workflow>aaaaa</workflow>
...
<System IDREF="INI_System_02">
<workflow>bbbbb</workflow>
...
<System IDREF="INI_System_03">
<workflow>cccc</workflow>
...
//定义变量。中间的程序会修改这个变量
private string sSelSystemName = "System_01";// 通过xpath读取 xml.
XmlDocument tuningXDoc = new XmlDocument();
tuningXDoc.Load("System.xml");
XmlNodeList workfrowNodeList = tuningXDoc.SelectNodes("/System[@IDREF = string($sSelSystemName)]/*") ;可是始终读不到数据。 请问各位大虾。这个xpath该如何写? 不胜感激。
这不就是个字符串吗?
("/System[@IDREF = "+sSelSystemName+"]/*")
这个节点是LZ你的XML文档的根节点么?如果不是的话tuningXDoc.SelectNodes()会先读取文档的根节点,所以就没有办法读到根节点下面你定义的节点了
是的,不是根节点。
补充一下xml:<Tuning>//root
<System IDREF="INI_System_01">
<workflow>aaaaa</workflow>
...
<System IDREF="INI_System_02">
<workflow>bbbbb</workflow>
...
<System IDREF="INI_System_03">
<workflow>cccc</workflow>
...
</Tuning>刚才我是把root省略了。整个的写法如下:sSelSystemName是string变量。如果我改成[@IDREF='INI_System_01']就可以。但是我想用变量控制。就不行。
XmlNodeList workfrowNodeList = tuningXDoc.SelectNodes("/Tuning/System[@IDREF = $sSelSystemName]/*") ;
("/System[@IDREF = '"+sSelSystemName+"']/*")
少加了单引号
问题解决了,非常感谢。但是对于这个表达式'"+sSelSystemName+"'还是不太理解, 能不能请你继续解释一下。