C# XPath:如何通过属性选择节点?
我有这样一个XML:C# XPath:如何通过属性选择节点?,c#,xml,xpath,C#,Xml,Xpath,我有这样一个XML: <?xml version="1.0" encoding="utf-8" ?> <colors> <color index = "0">#FF0000</color> <color index = "1">#FF0200</color> <color index = "2">#FF0300</color> <color index = "3">#FF0
<?xml version="1.0" encoding="utf-8" ?>
<colors>
<color index = "0">#FF0000</color>
<color index = "1">#FF0200</color>
<color index = "2">#FF0300</color>
<color index = "3">#FF0500</color>
[..]
我也尝试了评论过的版本,但没有返回任何结果。
有什么建议吗?改用
//color[@index='{0}']
。@符号表示“属性”
我注意到您使用的是一个逐字逐句的字符串文字——字符串开头的@符号。在这种情况下没有必要-字符串中没有任何反斜杠,并且不是多行。您也不需要在percentage
上显式调用ToString
——它将自动转换
string xpath = string.Format("//color[@index='{0}']", percentage);
顺便说一句,对于我们这些不会说本地XPath的人, 它允许您编写XML和XPath表达式并在线查看结果
每当我发现自己陷入“XPath地狱”时,我通常会去尝试各种组合,直到得到我(需要的)结果,因为某种原因,它比编写C#/Python测试程序甚至运行所谓的XML编辑器要快。为什么0必须用大括号括起来?我在Novell IDM中使用XPATH,@index=0就足够了。大括号表示什么?它不是xpath的一部分,而是String.Format的一部分,它将替换为第一个参数(即百分比)
string xpath = string.Format("//color[@index='{0}']", percentage);