【发布时间】:2010-12-05 13:59:50
【问题描述】:
我是编程新手,遇到了一个严重的问题,无法摆脱。
我有 5 个 XML URL。比如http://www.shopandmiles.com/xml/3_119_3.xml
这是一个 XML URL,我必须在相关列中获取值并写入数据库。 我的列名和 XML 标记名匹配。
当我编写下面的代码时,阅读器元素错过了 null xml 值。有些标签内部没有价值。我必须将它们添加到链接列表中,因为在该代码之后,我正在浏览链接列表,但如果我无法为 null xml 值添加值,则顺序不匹配。所以里面的列名和数据不匹配。我失去了订单。我的所有代码都在这里,如果有帮助,您还可以检查代码中的注释。谢谢大家。
public void WebServiceShopMilesCampaignsXMLRead(string URL)
{
XmlReader reader = XmlReader.Create(URL);
LinkedList<string> linkedList = new LinkedList<string>();
List<ShopAndMilesCampaigns> shopMileCampaigns = new List<ShopAndMilesCampaigns>();
try
{
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Text:
linkedList.AddLast(reader.Value);
break;
}
}
}
catch (XmlException exception)
{
Console.WriteLine("XML okurken bir sorun oluştu, hata detayı --> " + exception.Message);
}
LinkedListNode<string> node = linkedList.First;
while (node != null)
{
ShopAndMilesCampaigns shopMilesCampaign = new ShopAndMilesCampaigns();
shopMilesCampaign.Name = node.Value; // Null values mixes up the order because i cant add as null with reader.read above
node = node.Next;
shopMilesCampaign.Summary = node.Value;
node = node.Next;
shopMilesCampaign.AccountName = node.Value;
node = node.Next;
shopMilesCampaign.Category = node.Value;
node = node.Next;
shopMilesCampaign.Sector = node.Value;
node = node.Next;
shopMilesCampaign.Details = node.Value;
node = node.Next;
shopMilesCampaign.Image = node.Value;
node = node.Next;
shopMilesCampaign.Status = 1;
node = node.Next;
shopMileCampaigns.Add(shopMilesCampaign);
}
foreach (ShopAndMilesCampaigns shopMileCampaign in shopMileCampaigns)
{
shopMileCampaign.Insert();
}
}
【问题讨论】:
-
数据有多大? XmlReader 有时非常棘手;除非数据很大(在这种情况下,XML 本身可能是一个糟糕的选择),否则我更喜欢 XmlSerializer(反序列化为对象模型)或 XElement(解析为 DOM)。然后以更友好的形式使用它...
-
数据不大。所有 URL 都有类似的数据,就像我在问题中给出的数据一样。如果没有选择,那么我会尝试这些
标签: c# xml linked-list xmlreader