2017-09-25 59 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