DataContractSerializer を使用するすべてのサンプルが 1 つのオブジェクトのみを処理するため、混乱してしまいました。私はオブジェクトのコレクションを持っています。それを と呼びましょうList<Ticket> tickets
。を使用して各オブジェクトを書き込むための DataContractSerializer を取得できますがforeach (var ticket in tickets)
、その後、XML が適切にフォーマットされていることを確認するために、XML に対して変換を実行する必要があります。ただし、のTransform
方法を使用すると、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;
}
}
}