【问题标题】:XPath string to select a specific node with specific value c#XPath字符串选择具有特定值的特定节点c#
【发布时间】:2017-12-21 20:04:14
【问题描述】:

我想使用 XPath 选择 cat 的内部文本为 'PG' 的节点

<?xml version="1.0" encoding="utf-8"?>
<Students>
    <student>
        <name>Talha</name>
        <cat>PG</cat>
    </student>
    <student>
        <name>irfan</name>
        <cat>UG</cat>
    </student>
    <student>
        <name>Ali</name>
        <cat>PG</cat>
    </student>
    <student>
        <name>Umer</name>
        <cat>UG</cat>
    </student>
</Students>

我试过的代码是这样的

XmlElement xmldoc = (XmlElement)doc.DocumentElement
    .SelectSingleNode("/Students/student/*[*[local-name()='cat']='PG']");

【问题讨论】:

  • local-name() 电话是怎么回事?那是可疑的。除非您的实际 XML 具有名称空间,否则您不需要它,并且 即便如此您也并不真正需要它。那么...您的实际 XML 是否有命名空间?如果是,请显示您的实际 XML。如果没有,请摆脱local-name()

标签: c# xml xpath


【解决方案1】:

要选择子元素cat 具有值“PG”的所有student 节点,请使用此XPath 表达式

/Students/student[cat='PG']

只得到第一个使用

/Students/student[cat='PG'][1]

所以在 C# 的语法中使用

XmlElement xmldoc = (XmlElement)doc.DocumentElement.SelectSingleNode("/Students/student[cat='PG'][1]");

【讨论】:

  • SelectSingleNode 只会选择一个节点。不需要[1],对吧?
  • @ThomasWeller:是的。我只是为了强调这是要选择的两个节点中的第一个节点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多