2017-09-25 56 views
0
var reader = new StringReader(xDoc.OuterXml); 
ds.ReadXml(reader); 
下面

跳过是XML:重复节点在数据表转换XML时为DataSet C#

<SubscriberEligibilityOrBenefitInformationLoop> 
    <SubscriberEligibilityOrBenefitInformation> 
     <EligibilityBenefitInf>Active Coverage</EligibilityBenefitInf> 
     <ServiceTypeCode>Medical Care</ServiceTypeCode> 
     <ServiceTypeCode>Chiropractic</ServiceTypeCode> 
     <ServiceTypeCode>Hospital</ServiceTypeCode> 
     <InPlanNetworkIndicator>Not Applicable</InPlanNetworkIndicator> 
    </SubscriberEligibilityOrBenefitInformation> 
</SubscriberEligibilityOrBenefitInformationLoop> 

当我这个XML转换为数据集,所述重复的节点(例如 < ServiceTypeCode>)是在DataTable的列中跳过。 为什么跳过重复节点?

+0

请加上,代码转换 – ASpirin

+0

我已经在上面提到过了。 –

+0

它在这里: DataSet ds = new DataSet(); XmlDocument xDoc = new XmlDocument(); xDoc.LoadXml(anyString); var reader = new StringReader(xDoc.OuterXml); ds.ReadXml(reader); –

回答

0

基于你的XML数据集创建2个表,一个与根对象和其他与重复元素,以使其适合于它也产生一个Key列到根表对方,并在子表FK柱:

enter image description here

enter image description here

所以,你可以利用这些数据来建立一个新的列(尝试迪g变成Expression column

ds.Tables[0].Columns.Add("Codes"); 
foreach (DataRow row in ds.Tables[0].Rows) 
{ 
    row["Codes"] = string.Join(",", ds.Tables[1] 
        .Select($"SubscriberEligibilityOrBenefitInformation_ID = {row["SubscriberEligibilityOrBenefitInformation_ID"]}") 
        .Select(r=>r["ServiceTypeCode_Text"])); 
} 
+0

是的..多数民众赞成的方式!事实上,我不知道重复节点放在单独的DataTable中。 现在我可以操纵它作为我的愿望。感谢@ASpirin的帮助! –

+0

已经完成了它,但我在这里是新的,所以stackoverflow不考虑我的标记:| –

+0

请阅读此[SO帮助页面](https://stackoverflow.com/help/someone-answers) – ASpirin