【问题标题】:output XML to dataset将 XML 输出到数据集
【发布时间】:2014-09-22 15:56:21
【问题描述】:

我一直在尝试从外部源读取 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 的新手,可以使用一些帮助。

【问题讨论】:

标签: c# xml list serialization dataset


【解决方案1】:

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

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

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

您的文件只对 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);
}

【讨论】:

  • 该文件将位于我将拉下的遥控器上。我按原样使用 xml 运行 DataSet.ReadXml(string fileName)。它出错了。我错过了什么吗?
  • 我对 XML 声明有疑问(答案的底部)——是这个问题吗?否则有什么异常?
  • 我一直无法获得要显示的数据集。我是从外部来源中提取的。你是如何让 xml 显示出来的?
  • 您是否将 XML 作为字符串获取?
  • 是的,我是。我也将模式转换为类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
相关资源
最近更新 更多