C#XMLDocument从不区分大小写的搜索中返回一个字符串

时间:2016-05-30 20:46:17

标签: c# xml

我有以下方法来返回我正在寻找的属性的值,但我得到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;

        }

1 个答案:

答案 0 :(得分:0)

目前,您的字符串连接代码以下面的形式生成表达式,这不是有效的XPath表达式,即@不是有效的节点选择器,缺少attribute变量值附近的引号,缺少{{ 1}}在最后:

]

如果我理解正确,您希望生成以下XPath表达式:

/@[translate(
    your attribute variable value, 
    'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
    'abcdefghijklmnopqrstuvwxyz'
)

以上返回属性名称等于/@*[ translate( name(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz' ) = 'your attribute variable value' ] 变量值的属性,不区分大小写。所以相应的C#代码应该是:

attribute

注意:上面的所有XPath都被包装成行,只是为了让它(希望)更具可读性。