説明が下手で申し訳ありませんが、これを他にどのように表現すればよいかわかりません... しかし、ここに XML 構造の例を示します
<?xml version=”1.0” encoding=”UTF-8”>
<Response xmlns="http://www.blah.com">
<searchResult>
<info>
<firstName>John</firstName>
<lastName>Doe</lastName>
<totalCharges>100.00</totalCharges>
<nonPaymentCode>99999</nonPaymentCode>
</info>
<info>
<firstName>Susan</firstName>
<lastName>Doe</lastName>
<totalCharges>1000.00</totalCharges>
<errorCodes>
<errorCode>12345</errorCode>
</errorCodes>
</info>
<info>
<firstName>Peter</firstName>
<lastName>Doe</lastName>
<totalCharges>10.00</totalCharges>
<errorCodes>
<errorCode>12345</errorCode>
<errorCode>54321</errorCode>
<errorCode>85246</errorCode>
</errorCodes>
</info>
</searchResult>
</claimInquiryResponse>
データテーブルとして情報にアクセスするために、これをデータセットに変換しました。しかし、私の問題はエラーコードを取得しようとしています。テーブルの関係をチェックして、これを理解しようとしていました。エラーコードを正しく表示するには、どのエラーコードがどの人に関連付けられているかを把握する必要があるためです。XML 構造を制御することはできません。余分な帯域幅を減らすためにすべてがオプションであるため、現時点では変更することはできません。しかし、ここに私がやったことの例があります:
For Each rel As DataRelation In ds.Tables(i).ChildRelations
If rel.Nested Then
Dim temp As New DataTable
temp = rel.ChildTable
For Each relationship As DataRelation In temp.ChildRelations
For Each row As DataRow In relationship.ChildTable.Rows
For Each column As DataColumn In relationship.ChildTable.Columns
rowValues &= column.ColumnName & "-" & row(column.ColumnName) & "-" & relationship.RelationName & vbCrLf
Next
Next
Next
End If
Next
これにより、errorCodes テーブル内のデータの実際の値が得られます。しかし、それが関連付けられていた行/人にリンクする方法がわかりません。リレーションシップが生成するインデックスは、XML 内の位置に関連するのではなく、その発生に基づいて構築されます (たとえば、スーザンのエラー コードは 0、ピーターのエラー コードは 1 になります)。
私はこれを間違っているか、このデータを間違って見ています。XML リーダーを使用してこれらすべてを取得できることはわかっていますが、データは既にデータセットに含まれており、何か新しいことを学びたいと思っています。最後の手段としてのみ提案してください。
前もって感謝します!