由于所有使用 DataContractSerializer 的示例只处理一个对象,我感到很困惑。我有一个对象集合,我们称之为List<Ticket> tickets
。我可以使用 DataContractSerializer 来编写每个对象foreach (var ticket in tickets)
,但之后我需要对 XML 运行转换以确保其格式正确。但是,当使用Transform
a 的方法时,XmlCompiledTransform
我继续收到错误"Unexpected end of file while parsing Name has occurred. Line 447, position 28."
以下是我的代码,欢迎所有建设性的批评。
using (var ms = new MemoryStream())
{
using (var writer = XmlWriter.Create(ms, settings))
{
var ser = new DataContractSerializer(tickets.GetType());
writer.WriteStartDocument(true);
writer.WriteStartElement("Tickets");
foreach (var ticket in tickets)
{
ser.WriteObject(writer, ticket);
}
writer.WriteEndElement();
writer.WriteEndDocument();
ms.Position = 0;
var xslt = new XslCompiledTransform();
xslt.Load(xsltFp);
using (var output = new FileStream(xmlFp, FileMode.Create))
{
xslt.Transform(XmlReader.Create(ms), null, output);
output.Position = 0;
}
}
}