用于搜索属性的XPath变量

时间:2013-01-02 07:28:22

标签: c# xml xpath

我正在编写一个c#代码,需要我解析一个xml文件。我需要的陈述是

  XmlDocument xmlt = new XmlDocument();
  xmlt.Load(XMLFile1.xml");
  XmlNode node = xmlt.SelectSingleNode("//abc/data[@name='xyz']/value");

其中abc是根节点。 我正在搜索数据属性@name以匹配xyz,如果不是硬编码xyz我应该怎么做我需要一个变量,比如name_var。我基本上需要一个执行该功能的代码,以便我可以将@ name = name_var而不是xyz。

name_var在c#代码

中有所不同

1 个答案:

答案 0 :(得分:2)

据我所知,SelectNodesSelectSingleNode方法不提供重载以提供一些变量分辨率,所以你所能做的就是构造一个字符串,例如。

string name = "xyx";
XmlNode node = xmlt.SelectSingleNode(string.Format("abc/data[@name = '{0}']/value", name));

name值包含单引号'字符时,该方法会中断。如果您需要在XPath中使用变量分辨率,那么请查看XPathNavigator,它可以通过一些努力来实现:http://msdn.microsoft.com/en-us/library/vstudio/dd567715%28v=vs.100%29.aspx