如何使用显示名称从数据源获取值?

时间:2015-11-20 09:35:22

标签: c# xpath infopath2010

假设我有一个数据源:

    <Things>
        <thing display = "Choose..." value = "-1"/>
        <thing display = "Car" value = "01"/>
        <thing display = "Book" value = "47"/>
        <thing display = "Plane" value = "20"/>
        <thing display = "Other" value = "1"/>
    </Things>

我需要为Car定义一个值,例如,使用显示名称“car”。 所以,如果我使用“Car”,我应该能够定义它的值= 01。

XPathNavigator nav = DataSources["MyXmlData"].CreateNavigator();
nav = nav.SelectSingleNode("/Things/thing[./display='Car']");
nav = nav.SelectSingleNode("./value");

什么是更好的方式?我做错了什么?

3 个答案:

答案 0 :(得分:0)

您需要使用功能:lower-case

使用xPath示例:

/Things/thing[lower-case(@display)='car']/@value

答案 1 :(得分:0)

我相信你可以用一行来做到这一点:

nav = nav.SelectSingleNode("/Things/thing[@display='Car']/@value");

答案 2 :(得分:0)

xpath查询中的属性表达式错误。

Xpath Expression(For More

/从根节点

中选择

。选择当前节点

@选择属性

如果要按属性选择单个节点

var selectedNode= xpathNavigator.SelectSingleNode("/Things/thing[@display='Car']");

如果您想从所选节点

获取属性值
var value = result.GetAttribute("value", string.Empty);