我已經寫了一個XML解析塊,它工作成功,提供了一個絕對路徑。從C#中查詢特定節點的XML
我現在需要把一個XMLNode作爲參數,並對此運行一個xpath。
有誰知道如何做到這一點?
我嘗試使用相對XPath查詢沒有任何成功!
這是否應該這麼難?
我已經寫了一個XML解析塊,它工作成功,提供了一個絕對路徑。從C#中查詢特定節點的XML
我現在需要把一個XMLNode作爲參數,並對此運行一個xpath。
有誰知道如何做到這一點?
我嘗試使用相對XPath查詢沒有任何成功!
這是否應該這麼難?
這將有助於查看XPath表達式的示例,這些示例並不像您認爲的那樣工作。以下是一些可能的原因(我經常犯的錯誤)。
假設XML文檔,例如:
<A>
<B>
<C d='e'/>
</B>
<C/>
<D xmlns="http://foo"/>
</A>
忘記除去頂層斜線( '/')表示該文檔:
document.XPathSelectElements("/A")
//選擇單個的節點
document.XPathSelectElements("//B")
//選擇單個B節點
document.XPathSelectElements("//C")
//選擇兩個C節點
但
aNode.XPathSelectElements("/B") // selects nothing (this looks for a rootNode with name B)
aNode.XPathSelectElements("B") // selects a B node
bNode.XPathSelectElements("//C") // selects TWO C nodes - all descendants of the root node
bNode.select(".//C") // selects one C node - all descendants of B
遺忘命名空間。
aNode.XPathSelectElements("D")
//選擇什麼(d是在從A不同的命名空間) aNode.XPathSelectElements("[local-name()='D' and namespace-uri()='http://foo']")
//一個d節點
(這是經常當根節點攜帶prefixless命名空間的問題 - 易於錯過)
很難幫助解決這樣一個通用的問題;你可以發佈一個示例xml文件和xpath你想要工作嗎? – 2009-09-18 00:18:00