2015-12-14 84 views
1

我在嘗試獲取具有Home和Auto值的節點時出現錯誤。 任何幫助表示讚賞。表達式必須在嘗試獲取值時評估爲Xpath錯誤中設置的節點

XElement coverage = vehicle.XPathSelectElement("s0:VehicleCoverage/s0:Coverages/[CoverageLimitName=('Auto' |'Home')]", namespaceManager); 

我喜歡下

<Coverages> 
    <Coverage> 
    <CoverageLimitName>Home</CoverageLimitName> 
    <OptionalCode1>WY</OptionalCode1> 
    <OptionalCode2>Bodily Injury</OptionalCode2> 
    </CoverageLimitValue> 
    <Premium>166.00</Premium> 
    </Coverage> 
    <Coverage> 
    <CoverageLimitName>Auto</CoverageLimitName> 
    <CoverageLimitValue> 
     <OptionalCode1>T</OptionalCode1> 
     <OptionalCode2>Property Damage</OptionalCode2> 
    </CoverageLimitValue> 
    <Premium>88.00</Premium> 
    </Coverage> 
    <Coverage> 
    </Coverage> 
    .... 
    </Coverage> 
</Coverages> 

獲取節點,我想只使用XPath和想獲取全覆蓋的標籤時,它具有CoverageLimitName爲家庭和汽車

+1

請編輯您的問題,並根據您展示的XML文檔,顯示您期望的XPath表達式的結果。另外,表達式和文檔相互矛盾,因爲在XPath表達式中有前綴元素名稱,但在文檔中沒有。 –

+0

是的,正如@MathiasMüller所說的那樣,包含關於名稱空間和結構的XML文檔是正確的,否則我們只能猜測正確的結構。 –

+0

此外,您的XML實際上無效,因爲它在問題中顯示 - 第一個「Coverage」元素具有關閉「CoverageLimitValue」標記但沒有開始標記。作爲一個例子,用無效的XML發佈一個問題會讓人們很難爲你提供幫助。 –

回答

1

我的猜測是你想要以下內容:

/s0:VehicleCoverage/s0:Coverages/s0:Coverage[s0:CoverageLimitName = 'Auto' or s0:CoverageLimitName = 'Home'] 

對於你顯示的文檔,打開兩個Coverage元素。 (鑑於名稱空間已經正確處理)。

我們必須猜測,因爲您的示例XML文檔缺少名稱空間聲明,並且因爲您沒有告訴我們您究竟在尋找什麼。

相關問題