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

本文关键字:数据源 获取 何使用 显示 | 更新日期: 2023-09-27 18:23:47

假设我有一个数据源:

    <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");

什么是正确的方式?我做错了什么?

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

您需要使用函数:小写

工作xPath示例:

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

我相信你可以在一行中做到这一点:

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

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


Xpath表达式(了解更多)

/从根节点中选择

选择当前节点

@选择属性


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

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

如果您想从所选节点获得属性值

var value = result.GetAttribute("value", string.Empty);