我有以下方法来返回我正在寻找的属性的值,但我得到Expression Must evaluate to a node-set
我的路径是/Message
,我的属性是sequence
如果只是这样做
XmlNode mytestNode = xDoc.SelectSingleNode(xPath);
string attributec = mytestNode.Attributes[attribute].Value;
我得到了我想要的价值,但attribute name
并没有一直回到同一个案例中
这是我的方法
public static string xmlNode_GetValue_From_Attribute(XmlDocument xDoc, string xPath, string attribute)
{
return xDoc.SelectSingleNode(xPath + "/@" + "[translate(" + attribute + ", ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’, ‘abcdefghijklmnopqrstuvwxyz’)").Value;
}
答案 0 :(得分:0)
目前,您的字符串连接代码以下面的形式生成表达式,这不是有效的XPath表达式,即@
不是有效的节点选择器,缺少attribute
变量值附近的引号,缺少{{ 1}}在最后:
]
如果我理解正确,您希望生成以下XPath表达式:
/@[translate(
your attribute variable value,
'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'abcdefghijklmnopqrstuvwxyz'
)
以上返回属性名称等于/@*[
translate(
name(),
'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'abcdefghijklmnopqrstuvwxyz'
) = 'your attribute variable value'
]
变量值的属性,不区分大小写。所以相应的C#代码应该是:
attribute
注意:上面的所有XPath都被包装成行,只是为了让它(希望)更具可读性。