0
我有下列XML片斷(Zimbra的SOAP API,如果有人關心,但它並不重要)爲什麼SelectSingleElement適用於某些查詢,但不適用於其他查詢?
<appt id="266" uid="bf177af2-2875-447a-8e74-d9bc8c108611" nextAlarm="1409547300000" d="1380213518000" rev="63" s="0" l="10" xmlns="urn:zimbraMail">
<inv id="265" seq="3" compNum="0" type="appt">
我有一個包含這個片段的XmlElement的。我已成立了一個命名空間管理等,如下
XmlNamespaceManager ns = new XmlNamespaceManager(element.OwnerDocument.NameTable);
ns.AddNamespace("prefix", "urn:zimbraMail");
下面的代碼
element.SelectSingleNode("//prefix:" + "appt/@id", ns).Value
收益266如預期
,但我不能設法選擇聘任,聘任/ INV或其他任何東西,除了基本上是appt的屬性。以下是我嘗試過的一些查詢。一些返回null,一些返回的格式錯誤(因爲我周圍的顛簸)
element.SelectSingleNode("//prefix:" + "appt/inv", ns).Value
element.SelectSingleNode("//prefix:" + "/appt/inv", ns).Value
element.SelectSingleNode("//prefix:" + "/inv", ns).Value
element.SelectSingleNode("//prefix:" + "appt", ns).Value
我也試過不包括前綴等任何幫助過?部分問題可能是OwnerDoc是一個SOAP信封,可能會弄亂名稱空間,但爲什麼第一個查詢會起作用? (順便說一句,即使不使用前綴/名稱空間邏輯,第一個查詢仍然有效)
那一定是這是我見過的最愚蠢的事情。這使xpath語法幾乎對我毫無價值。 –
我結束了剛剛剝離的命名空間,它使所有的事情都變得更容易。 –
歡迎使用XML - 非常有用但非常冗長:) –