我一般都不是C#的新手,也不是解析xml的新手。我有一个从Web服务中获取的xml流,该流具有要使用数据集/数据表加载到SQL Server中的属性值。我很难在要导入SQL的结构中获取数据。
我想提取数据(对于每个数据,将其放入以下结构的表中:
列:bounce_date cancelle_mailing_instance_id cancel_message cancel_date电子邮件等。
行:bounce_date“值” canceling_mailing_instance_id“值” cancel_message“值” canceling_date“值”电子邮件“ value”,等等。
到目前为止,我能完成的就是将所有数据放入行中。我想基于等创建列标题
...以及基于“值”,“值”的行等。
我的XML如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<GridResponse xmlns="http://sample.sample.net/aapi/2009/08/">
<Brand id="12345">ACME</Brand>
<User>asample</User>
<Grids>
<Grid type="subscriber">
<Record row="1">
<Fields>
<Field element="bounce_date"/>
<Field element="cancellation_mailing_instance_id"/>
<Field element="cancellation_message"/>
<Field element="cancellation_date">2018-03-21T16:00:25.7670000Z</Field>
<Field element="email"/>
<Field element="is_repeated_bouncer">0</Field>
<Field element="is_unsubscriber">1</Field>
<Field element="modified_date">2018-03-21T16:00:29.6500000Z</Field>
<Field element="service_since_date">2018-03-21T13:45:50.2800000Z</Field>
<Field element="user_id"/>
<Field element="subscriber_upload_id"/>
<Field element="imis_name_id"/>
</Fields>
</Record>
<Record row="2">
<Fields>
<Field element="bounce_date"/>
<Field element="cancellation_mailing_instance_id"/>
<Field element="cancellation_message"/>
<Field element="cancellation_date"/>
<Field element="email">xxxxx@sample.org</Field>
<Field element="is_repeated_bouncer">0</Field>
<Field element="is_unsubscriber">0</Field>
<Field element="modified_date">2018-03-21T14:07:32.1530000Z</Field>
<Field element="service_since_date">2018-03-21T14:07:32.1530000Z</Field>
<Field element="user_id"/>
<Field element="subscriber_upload_id"/>
<Field element="imis_name_id"/>
</Fields>
</Record>
<Record row="3">
<Fields>
<Field element="bounce_date"/>
<Field element="cancellation_mailing_instance_id"/>
<Field element="cancellation_message"/>
<Field element="cancellation_date"/>
<Field element="email">xxxxx2@sample.org</Field>
<Field element="is_repeated_bouncer">0</Field>
<Field element="is_unsubscriber">0</Field>
<Field element="modified_date">2019-04-22T20:03:33.9700000Z</Field>
<Field element="service_since_date">2019-04-22T20:03:33.9700000Z</Field>
<Field element="user_id"/>
<Field element="subscriber_upload_id"/>
<Field element="imis_name_id"/>
</Fields>
</Record>
</Grid>
</Grids>
</GridResponse>
到目前为止,我正在尝试使用Linq To XML。如果有人可以提供一些代码示例来帮助我入门,我将不胜感激!预先感谢。
答案 0 :(得分:0)
他是一些真正简单的Xml Linq,可以将结果读入字典
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.IO;
namespace ConsoleApplication110
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
string xml = File.ReadAllText(FILENAME);
XDocument doc = XDocument.Parse(xml);
XElement root = doc.Root;
XNamespace ns = root.GetDefaultNamespace();
Dictionary<int, List<string>> results = doc.Descendants(ns + "Record")
.GroupBy(x => (int)x.Attribute("row"), y => y)
.ToDictionary(x => x.Key, y => y.Descendants(ns + "Field").Select(z => (string)z.Attribute("element")).ToList());
}
}
}