【发布时间】:2016-06-27 09:38:19
【问题描述】:
我刚刚开始学习 SAX/Stream 以及用于解析和处理 XML 文件的 DOM 方法。我的场景是,我正在处理从我托管的 FTP 服务器检索到的给定 XML 文件的信息,将其放入单独的数组列表中,然后将列表传递到我的 DBManager 以将它们添加到数据库中。但是,在我想将它添加到数据库之前,我希望用户在“添加到数据库”之前按下“检查按钮”以确保信息确实正确。但这会以某种方式触发 FormatException。我在我的任何类或变量使用中都没有看到任何“日期时间”,这让我更加困惑。
编辑 1:感谢 Abdo Hussein,我意识到屏幕截图中所述的问题是我使用的是 node,而不是 node2。然而,同样的问题也适用于下一行,也可能是后一行。尽管它们仍与 node 而不是 node2 在同一个循环中。
invoice.ShippingCharges = Convert.ToDecimal(node.ChildNodes[4].InnerText);
invoice.InvoiceTotal = Convert.ToDecimal(node.ChildNodes[5].InnerText);
这是这个特定类的 pastebin 代码,因为它太长而且太乱了(我知道,我会留到以后,我需要先解决这个问题)http://pastebin.com/FewCm23W
下面是我正在处理的 XML:
<?xml version="1.0" encoding="utf-8" ?>
<Invoices>
<Invoice ID="I001">
<InvoiceDate>21/06/2016</InvoiceDate>
<SellerID>Supp001</SellerID>
<BuyerID>WCS1810</BuyerID>
<OrderID>Order001</OrderID>
<InvoiceItem>
<Product ID="R001">
<ProductName>8GB RAM King</ProductName>
<Description>RAM</Description>
<Capacity>8GB</Capacity>
<Quantity>2</Quantity>
<UnitPrice>100</UnitPrice>
</Product>
</InvoiceItem>
<ShippingCharges>5</ShippingCharges>
<InvoiceTotal>205</InvoiceTotal>
</Invoice>
</Invoices>
这些是用于存储不同类型信息的类:
发票.cs
class Invoice
{
public string InvoiceID { get; set; }
public string InvoiceDate { get; set; }
public string OrderID { get; set; }
public string SellerID { get; set; }
public decimal ItemsTotalPrice { get; set; }
public decimal ShippingCharges { get; set; }
//shippin charges + itemsTotalPrice
public decimal InvoiceTotal { get; set; }
}
发票项目
class InvoiceItem
{
public string InvoiceID { get; set; }
public string ProductID { get; set; }
public string Description { get; set; }
public string Capacity { get; set; }
public int Quantity { get; set; }
public decimal UnitPrice { get; set; }
public decimal TotalPrice { get; set; }
}
【问题讨论】:
标签: c# xml dom xml-parsing formatexception