2011-05-05 62 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']");