0

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;
        }
    }
}
4

1 に答える 1