【发布时间】:2014-08-12 20:51:45
【问题描述】:
这就是我所做的:
一个可序列化的类:
[Serializable()]
public class Ticket
{
public string CitationNumber { get; set; }
public decimal Amount { get; set; }
}
然后将模型序列化成xml:
var model = cart.Citations
.Select(c => new Ticket(c.Number, c.Amount)).ToList();
var serializer = new XmlSerializer(typeof (List<Ticket>));
var sw = new StringWriter();
serializer.Serialize(sw, model);
return sw.ToString();
输出sw.ToString() 是这样的
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfTicket xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Ticket>
<CitationNumber>00092844</CitationNumber>
<Amount>20</Amount>
</Ticket>
</ArrayOfTicket>
有没有办法自定义 Serialize() 输出以删除这些架构信息,例如:<?xml version="1.0" encoding="utf-16"?> 和 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"?
如何将根元素 ArrayOfTicket 更改为其他内容?
我可以控制这些输出吗?
【问题讨论】:
-
它保存在数据库中,我真的不需要那些额外的信息。
-
我认为这不会产生影响,即使从长远来看也是如此。另外,为什么不将每个项目(CitationNumber,Amount,...)单独存储为它自己的表,而不是将 xml 存储在数据库中?您不能轻松查询存储的 xml。
-
您是否考虑过将数据转换为 DataTable,然后从那里开始。我已经这样做了好几次,如果您愿意,我可以给您发送一个工作示例。就我而言,我正在从 .csv 文件中读取数据,然后将其加载到
DataTable中,然后使用MissingSchemaAction将其序列化为 XML
标签: c# xml serialization