这个 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/