c# - 如何编写 XPath 表达式以从其值中选择节点名称

标签 c# asp.net-mvc xpath

例如在“qualities”中 - 得到值“4”,取名为“rarity3”然后在“qualityNames”中我得到名为“rarity3”的节点并取值“amazingrarity”

<result>
  <status>1</status>
  <qualities>
    <Normal>0</Normal>
    <rarity1>1</rarity1>
    <rarity2>2</rarity2>
    <vintage>3</vintage>
    <rarity3>4</rarity3>
    <rarity4>5</rarity4>
  </qualities>
  <qualityNames>
    <Normal>Normal</Normal>
    <rarity1>Genuine</rarity1>
    <rarity2>rarity2</rarity2>
    <vintage>Vintage</vintage>
    <rarity3>amazingrarity</rarity3>
    <rarity4>Unusual</rarity4>
  </qualityNames>
</result>

我在 C# 中执行此操作(它是一个 MVC 应用程序)并且我更喜欢使用 XPath,因为我正在为 XML 编制索引并且我还没有找到查询内存技术的最快方法(此 XML 文件有 ~3MB,我正在使用 IndexingXPathNavigator)。

最佳答案

使用 local-name() 和 text() 函数 + 谓词。对于值“4”,它将是

//qualityNames/*[local-name()=local-name(//qualities/*[text() = '4'])]

使用 http://www.xpathtester.com 测试

关于c# - 如何编写 XPath 表达式以从其值中选择节点名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16780247/

相关文章:

c# - Monotouch 声音无法正常播放

c# - 具体解析XML成数组

asp.net - ASP.NET Identity 的 IUserSecurityStampStore<TUser> 接口(interface)是什么?

javascript - 提交按钮重定向到另一个 View ASP.NET MVC

python - 使用text(),有没有办法用scrapy将空文本转换为 'None'

c# - Process.Start异常: "The directory name is invalid"

c# - 第一次 where 条件为真后是否可以停止查询? (linq 到 sql)

asp.net-mvc - 如何使用简单注入(inject)器装饰 ASP.NET MVC Controller

java - 如何在不从其后代检索文本的情况下获取元素的文本

c# - 数据网格 - "Two-way binding requires Path or XPath."