2010-09-22 95 views
0

我有一些XML:不能得到這個XPath的工作

<metadata> 
    <dataIdInfo> 
    <idCitation> 
     <resRefDate> 
     <refDate>1996</refDate> 
     <refDateTyp> 
      <DateTypCd value="007" /> 
     </refDateTyp> 
     </resRefDate> 
     <resRefDate> 
     <refDate>1998</refDate> 
     <refDateTypCd> 
      <DateTypCd value="003" /> 
     </refDateTypCd> 
     </resRefDate> 
    </idCitation> 
    </dataIdInfo> 
</metadata> 

我想從鑰匙007到目前爲止,我已經拿到了1996年這一數值

XmlDocument doc = new xmlDocument(); 
doc.LoadXml(myXmlString); 
XmlNode node = doc.SelectSingleNode("metadata/dataIdInfo/idCitation/resRefDate/refDate[refDateType/DateTypCd[@value=\"007\"]"); 

但我不斷收到地址有無效標記的錯誤。我一直在審查msdn上的XPath示例doc,但顯然我在方括號內出錯了 - 幫助!

感謝 羅布

回答

5

兩個問題更換... /resRefDate/refDate[ ...

首先,您未能關閉兩組方括號,這是無效的標記。其次,你的過濾器表達式(方括號)在錯誤的地方,它們應該在refDate之前,因爲它是你正在過濾的resRefDate。以下是正確的表達。

metadata/dataIdInfo/idCitation/resRefDate 
           [refDateTyp/DateTypCd/@value="007"]/refDate 
+0

+1正確答案。關鍵價值中的小錯字。此外,可以斷線:它使表達更清晰。 – 2010-09-22 13:48:40

+0

就是這樣 - 感謝您的幫助! – rob 2010-09-22 13:51:33

0

refDateTyp不refDate,這是通過在查詢你的病情表示的子標籤。

你應該通過... /resRefDate[ ...

0

貌似你,而不是「refDateTyp」(上月底與「E」)「refDateType」這是我在你的XML片段看到。