c# - xpath where 子句返回 0 个节点

标签 c# xml xpath

这个 xpath 表达式中的 where 子句不起作用并且总是返回 0。我无法弄清楚出了什么问题。代码在这里。 currentRelationship 变量的值为“testentity_relname”。;

var entity = doc.SelectNodes(string.Format("//Settings/Entity[RelationshipName={0}]", currentRelationship)).Cast<XmlNode>().ToList();

XML 文档如下所示;

<Settings>
  <AccessRightTypes>
    <AccessRightType>WriteAccess</AccessRightType>
    <AccessRightType>ShareAccess</AccessRightType>
    <AccessRightType>ReadAccess</AccessRightType>
    <AccessRightType>NoneAccess</AccessRightType>
    <AccessRightType>DeleteAccess</AccessRightType>
    <AccessRightType>CreateAccess</AccessRightType>
    <AccessRightType>AssignAccess</AccessRightType>
    <AccessRightType>AppendToAccess</AccessRightType>
    <AccessRightType>AppendAccess</AccessRightType>
  </AccessRightTypes>
  <Entity>
    <RelationshipName>testentity_relname.</RelationshipName>
    <AccessRight>ReadAccess</AccessRight>
    <AccessRight>WriteAccess</AccessRight>
  </Entity>
</Settings>

如果我仅使用“//Settings/Entity”的 xpath 表达式,我确实会返回单个实体节点。但同样,where 子句不起作用。和信息将不胜感激。

最佳答案

看起来您在 xpath 格式字符串中的参数周围缺少单引号。

var entity = doc.SelectNodes(string.Format("//Settings/Entity[RelationshipName='{0}']", currentRelationship)).Cast<XmlNode>().ToList();

关于c# - xpath where 子句返回 0 个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27503001/

相关文章:

c# - 特定 url 模式的正则表达式

python - XPath - 在单个查询中选择特定节点的前后兄弟节点

xml - 尽管 minOccurs=0,但仍需要 XSD 元素

python - 在 scrapy 的 xPath 选择器中使用 python 变量

python - 过滤 xml 文件以删除其中包含特定文本的行?

c# - 将 C# 加密算法转换为 Ruby

c# -/unsafe标志对应的是 "preprocessor"符号吗?

c# - IsAssignableFrom、IsInstanceOf 和 BaseType 测试

xml - XSLT 1.0 (xsltproc) - 无法解析巨大的 XML

xml - 基于属性满足条件的节点数