2011-05-05 96 views
5

我正在尝试使用XPath表达式在XMLDocument上执行SelectSingleNode。但是,当我正在搜索的属性值包含多个正斜杠(/)时,它将返回空值。XPath查询包含正斜杠的属性(/)

我无法在线找到任何资源来转义正斜杠。有没有人知道解决这个问题的方法?或者我有我的语法都匹配属性值错了吗?

示例XML

<?xml version="1.0"?> 
    <Root> 
    <Page Path="/brand" /> 
    <Page Path="/brand/armada" /> 
    </Root> 

此XPath表达式返回正确的节点(例如:上述样品中的第一个)

XmlNode N = xmlDoc.SelectSingleNode("Root/Page[@Path='/brand']"); 

此XPath表达式返回null

XmlNode N = xmlDoc.SelectSingleNode("Root/Page[@Path='/brand/armada']"); 

我在C#,.net 3.5环境中。

编辑:感谢您的答复。我通过在select表达式中使用双向正斜杠来解决问题。

XmlNode N = xmlDoc.SelectSingleNode("Root//Page[@Path='/brand/armada']"); 
+0

我最小的repro控制台应用程序给出了xpaths的预期结果 – AakashM 2011-05-05 09:48:27

+0

必须是一个错误。或者问题在其他地方。 XMLspy 2011 SP1使用Xpath表达式更正它。 – ceving 2011-05-05 14:18:44

+4

@chris如果您自己找到了答案,您可以在下面发布答案,并将其标记为接受的答案,以便其他人可以从中受益。这也意味着这个问题不再出现在SO的“未答复”部分。谢谢 – BMac 2015-05-11 07:49:32

回答

0

感谢您的回复。我通过在select表达式中使用双向正斜杠来解决问题。

XmlNode N = xmlDoc.SelectSingleNode("Root//Page[@Path='/brand/armada']");