C# xpath where子句返回0个节点
此xpath表达式中的My where子句不起作用,始终返回0。我想不出是怎么回事。代码在这里。currentRelationship变量的值为“testentity_relname”C# xpath where子句返回0个节点,c#,xml,xpath,C#,Xml,Xpath,此xpath表达式中的My where子句不起作用,始终返回0。我想不出是怎么回事。代码在这里。currentRelationship变量的值为“testentity_relname” var entity = doc.SelectNodes(string.Format("//Settings/Entity[RelationshipName={0}]", currentRelationship)).Cast<XmlNode>().ToList(); var entity=doc.S
var entity = doc.SelectNodes(string.Format("//Settings/Entity[RelationshipName={0}]", currentRelationship)).Cast<XmlNode>().ToList();
var entity=doc.SelectNodes(string.Format(“//Settings/entity[RelationshipName={0}]”,currentRelationship)).Cast().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>
写访问
共享访问
读访问
非访问
删除访问
CreateAccess
分配访问权限
附件访问
附加访问
测试实体名称。
读访问
写访问
如果我只使用“//Settings/Entity”的xpath表达式,那么我将返回单个实体节点。但是,where条款同样不起作用。和信息将不胜感激。看起来xpath格式字符串中的参数缺少单引号
var entity = doc.SelectNodes(string.Format("//Settings/Entity[RelationshipName='{0}']", currentRelationship)).Cast<XmlNode>().ToList();
var entity=doc.SelectNodes(string.Format(“//Settings/entity[RelationshipName='{0}']”,currentRelationship)).Cast().ToList();
如果使用字符串连接构造这样的表达式,一定要注意注入攻击的风险;此外,如果表达式包含引号,则该表达式可能在语法上无效。如果可能,最好在XPath表达式中使用变量引用。据我所知,SelectNodes()方法不允许XPath表达式中的变量引用,但还有其他API允许。