他の要素の値を使用して子孫要素の1つの値を取得しようとしています。ここで別の要素の値を使用してルート子孫要素を取得する
は、XMLがどのように見えるかです:
<RateQuoteResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<RateQuote>
<SERVICEUPGRADES>
<DELIVERYTIME>Single-hour Window</DELIVERYTIME>
<SERVICE_TYPE>guaranteed window</SERVICE_TYPE>
<TOTAL_COST>245.52</TOTAL_COST>
</SERVICEUPGRADES>
<SERVICEUPGRADES>
<DELIVERYTIME>Multi-hour Window</DELIVERYTIME>
<SERVICE_TYPE>guaranteed window</SERVICE_TYPE>
<TOTAL_COST>245.52</TOTAL_COST>
</SERVICEUPGRADES>
<SERVICEUPGRADES>
<DELIVERYDAYS>Please Call Customer Service for Available Days and Times</DELIVERYDAYS>
<DELIVERYTIME>Single or Multi Day Window</DELIVERYTIME>
<SERVICE_TYPE>guaranteed window</SERVICE_TYPE>
<TOTAL_COST>130.52</TOTAL_COST>
</SERVICEUPGRADES>
<SERVICEUPGRADES>
<DELIVERYDATE>04/26/2016</DELIVERYDATE>
<DELIVERYDAYS>1</DELIVERYDAYS>
<DELIVERYTIME>before 9:00 AM</DELIVERYTIME>
<SERVICE_TYPE>guaranteed delivery</SERVICE_TYPE>
<TOTAL_COST>195.52</TOTAL_COST>
</SERVICEUPGRADES>
<SERVICEUPGRADES>
<DELIVERYDATE>04/26/2016</DELIVERYDATE>
<DELIVERYDAYS>1</DELIVERYDAYS>
<DELIVERYTIME>before 12:00 PM (noon)</DELIVERYTIME>
<SERVICE_TYPE>guaranteed delivery</SERVICE_TYPE>
<TOTAL_COST>160.52</TOTAL_COST>
</SERVICEUPGRADES>
<SERVICEUPGRADES>
<DELIVERYDATE>04/26/2016</DELIVERYDATE>
<DELIVERYDAYS>1</DELIVERYDAYS>
<DELIVERYTIME>before 3:30 PM</DELIVERYTIME>
<SERVICE_TYPE>guaranteed delivery</SERVICE_TYPE>
<TOTAL_COST>130.52</TOTAL_COST>
</SERVICEUPGRADES>
<SERVICEUPGRADES>
<DELIVERYDATE>04/26/2016</DELIVERYDATE>
<DELIVERYDAYS>1</DELIVERYDAYS>
<SERVICE_TYPE>regional delivery</SERVICE_TYPE>
<TOTAL_COST>95.52</TOTAL_COST>
</SERVICEUPGRADES>
</RateQuote>
</RateQuoteResponse>
私がやろうとしているそれは何の要素は、以下のコードは、要素のすべての残りのために働くregional delivery
あるTOTAL_COST
ノードの値を取得することです:
var deliveryTime1 = doc.Root.Descendants("SERVICEUPGRADES").SingleOrDefault(c => (string)c.Element("DELIVERYTIME") == "Single-hour Window");
var deliveryTime2 = doc.Root.Descendants("SERVICEUPGRADES").SingleOrDefault(c => (string)c.Element("DELIVERYTIME") == "Multi-hour Window");
var deliveryTime3 = doc.Root.Descendants("SERVICEUPGRADES").SingleOrDefault(c => (string)c.Element("DELIVERYTIME") == "Single or Multi Day Window");
これらのすべての作業は、ノードが存在し、値を持つ要素が含まれている場合でも常にnullを返します。
var deliveryTime7 = doc.Root.Descendants("SERVICEUPGRADES").SingleOrDefault(c => (string)c.Element("SERVICE_TYPE") == "regional delivery");
は、この特定の要素を検索しようとしたとき、私は何か間違ったことをやっていますか?私は名前空間(以下のようなもの)を追加しようとしましたが、どちらもうまくいきませんでした。
var deliveryTime7 = doc.Root.Descendants(ns + "SERVICEUPGRADES").SingleOrDefault(e => (string)e.Element(ns + "SERVICE_TYPE") == "regional delivery");
私はあなたのコードを試してみて、それは私のために働く。 – Arijoon
@ user2574121あなたのコードをテストしました:https://dotnetfiddle.net/Wv0vM6。 dotnetfiddleで問題を再現できれば、さらに助けてくれる可能性があります。 – har07