Datatable に変換したい LinQ XDocument (SOAP 応答から) があります。これが私が扱っているXMLです。名前空間を使用して、問題をさらに複雑にしています。
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:getDetailsResponse xmlns:ns2="http://service.xyz.com/">
<return>
<meeting meetingCode="8">
<meetingDate>2013-07-08T00:00:00+10:00</meetingDate>
<actionList>
<actionCoOrdinator>The action man</actionCoOrdinator>
<action>
<actionType>Type1</actionType>
<actionBy>John</actionBy>
</action>
<action>
<actionType>Type2</actionType>
<actionBy>Mary</actionBy>
</action>
<action>
<actionType>Type3</actionType>
<actionBy>Phil</actionBy>
</action>
</actionList>
</meeting>
</return>
</ns2:getDetailsResponse>
</soap:Body>
</soap:Envelope>
そして、これがDataTableに必要な出力です
MeetingCode MeetingDate ActionCoOrdinator ActionType ActionBy ----------- -------------------------- -------------- --- ---------- -------- 8 2013-07-08T00:00:00+10:00 アクションマン Type1 ジョン 8 2013-07-08T00:00:00+10:00 アクションマン Type2 メアリー 8 2013-07-08T00:00:00+10:00 アクションマン Type3 フィル
ご覧のとおり、「actionList」内の「アクション」要素ごとに行が必要ですが、行ごとに親/祖父母要素からの情報も必要です。この段階で私が持っているのは、以下のコードを使用した XDocument だけです。
XDocument myXDoc = XDocument.Parse(soapStringResult);
このサイトで XDocument からのデータの抽出に関するさまざまな投稿を見てきましたが、私の問題は、必要なデータ項目が事前にわからないことです。私の出発点は、「行」を表す xPath です。Xパスは
ns2:getDetailsResponse/return/meeting/actionList/action
次に、この Xpath に対して必要なすべてのデータ項目を含む DB テーブルがあります。テーブルはこんな感じ
XpathDataItem ---------------------- ../../@meetingCode ../../会議日 ../actionCoOrdinator アクションタイプ によるアクション
探しているデータ項目の Xpath がわかっている場合は、データを DataTable に読み込むことができますが、不明な XPath のセットを使用してそれを行う方法がわかりません。
前もってありがとうジョン