XML to dataset - 查找datarow包含数据表的问题

时间:2010-12-07 13:40:05

标签: .net xml vb.net dataset relationships

很抱歉,如果说明不好,但我不知道怎么把这个... 但这是一个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>

我已将其转换为数据集,以便将信息作为数据表进行访问。 但我的问题是试图获取errorCodes。我试图通过检查表的关系来解决这个问题。因为我必须弄清楚哪些错误代码与哪个人相关联,以便正确显示它们。我无法控制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表中数据的实际值。但我无法弄清楚如何将它链接回与其相关联的行/人。关系生成的索引是由它们的出现构成的(例如,susan的错误代码将为0,而对于peter,它将为1),与它们在XML中的位置无关。

我要么做错了,要么错误地查看这些数据。 我知道我可以使用XML阅读器来获取所有这些,但数据已经在数据集中了,我想要学习新东西。所以请将它作为最后的手段。

提前谢谢!

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我最后只是阅读XML检查节点名称并为错误代码构建一个单独的表,当我找到信息的结束元素时,我会单独吐出表格。