将XML输出到数据集

时间:2014-09-22 15:56:21

标签: c# xml list serialization dataset

我一直在尝试从外部源读取xml文件,以将其导入数据集。我已经采用了模式并通过xsd编译了我的类,并将其加载到解决方案中。

我的xml:

<?xml version="1.0" encoding="UTF-8" standalone="true"?>
<CAMDealerManifest AssetURL="http://www.the placewherethefilelives.com/CAMPublic/d98c8185/" DealerCode="41065" DealerGuid="bc0d0bc8-b37b-11e3-a345-ac162dbc18f8" DealerName="Ron Hibbard Toyota" ManifestId="13" ManifestURL="http://www.toyota.com/CAMPublic/d/41065-bc0d0bc8.xml" Path="41065-bc0d0bc8" ProviderId="1011" WebsiteVendorName="WorldDealer">
  <CAMCampaigns count="15" dateTime="2014-09-16T17:18:40.877-07:00">
    <CAMCampaign ManifestId="13" endDate="2014-12-31T11:59:59-08:00" flightDates="08/01/14 - 12/31/14" geography="National" groupName="National" id="68" name="National - Corolla Style Elevated" priority="0" required="false" startDate="2014-08-01T12:00:00-07:00">
      <CAMCreative SubGroup="Corolla Style Elevated" Id="49" Name="National - Corolla Style Elevated" ImageAltText="Toyota's national banner for the stylish 2014 Corolla" ImageSearchTerms="Toyota, 2014 Corolla, Style Elevated, New Heights" Link="New Inventory" Model="Corolla" MonthYear="08-2014" Priority="3" Required="false">
        <CAMCreativeSource CAMAssetCount="1" Height="409" Width="990" MediaBinAssetId="0E1C886A-C5CE-4409-AD36-7070D614A7A6" MediaBinFileName="03-14_01_2014_nat-style-elevated_990x409_0000000460_corolla_o_xta.jpg">
          <CAMAsset Path="National/Corolla-Style-Elevated/National---Corolla-Style-Elevated/990/409/" Id="1273" Name="08-14_01_National-Corolla-Style-Elevated_990x409_431_Corolla_O_xta.jpg" Height="409" Width="990" assetType="JPG" Guid="b9f4d3cd-fefd-4ff3-b209-338f409e551c" Md5Hex="3e328dc32a2db9fc1f3d6a2167d3e5d2">
            <CAMTracking>
              <SiteCatalyst version="1.0">
                <Click tmsomni.events="event28" tmsomni.products=";08-14_01_National-Corolla-Style-Elevated_990x409_431_Corolla_O_xta;;;event28=1"/>
                <Impression tmsomni.events="event29" tmsomni.products=";08-14_01_National-Corolla-Style-Elevated_990x409_431_Corolla_O_xta;;event29=1;evar43=img|evar61=corolla|evar54=o|evar49={$CAM_PAGE_POSITION}"/>
              </SiteCatalyst>
            </CAMTracking>
          </CAMAsset>
        </CAMCreativeSource>
      </CAMCreative>
  </CAMCampaign>
</CAMCampaigns>
<CAMExpiredCampaigns count="0" dateTime="2014-09-16T17:18:40.873-07:00"/>
</CAMDealerManifest>

我似乎无法将此xml列入列表或放入数据集中。我是反序列化xml的新手,可以使用一些帮助。

1 个答案:

答案 0 :(得分:0)

只需使用文件路径调用ReadXml:

var dataSet = new DataSet();
dataSet.ReadXml(string PathToFile);

效果很好;甚至会创建所有关系(在屏幕截图中注意CAMDealerManifestId)。

Tables created from DataSet.ReadXml

您的文件仅对XML声明进行了修改 - 必须将standalone值从true更改为yes

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

如果你是以字符串形式阅读,你可以这样做:

var xmlString = HoweverYouGetTheString().Split(new string[] { "\r\n" }, StringSplitOptions.None);
xmlString[0] = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>";

using (var reader = new System.IO.StringReader(String.Join("\r\n", xmlString)))
{
    dataSet.ReadXml(reader);
}