Skip to content

Writing

XmlTvSharp can write complete documents or write top-level elements one at a time.

Complete Document

Use XmlTvWriter.WriteAsync when your document is already in memory:

csharp
var document = new XmlTvDocument();

document.Channels.Add(new XmlTvChannel("channel-one", "Channel One"));
document.Programmes.Add(
    new XmlTvProgramme(
        XmlTvDateTime.Parse("20260605120000 +0000"),
        "channel-one",
        "News")
    {
        Stop = XmlTvDateTime.Parse("20260605123000 +0000")
    });

await XmlTvWriter.WriteAsync(document, "guide.xml");

Channels are written before programmes.

Forward-Only Writing

Use the writer lifecycle when you want to write channels and programmes as they become available:

csharp
using var writer = new XmlTvWriter("guide.xml");

await writer.StartAsync();
await writer.WriteChannelAsync(new XmlTvChannel("channel-one", "Channel One"));
await writer.WriteProgrammeAsync(
    new XmlTvProgramme(
        XmlTvDateTime.Parse("20260605120000 +0000"),
        "channel-one",
        "News"));
await writer.CompleteAsync();

The lifecycle rules are:

  • Call StartAsync once.
  • Write all channels before the first programme.
  • Call CompleteAsync once.
  • Channel IDs must be unique within the writer.

Writer Options

Use XmlTvWriterOptions for XML output and compatibility behavior. See Writer Options.

Validation

The writer validates the model while writing. For example, channels require at least one display name, programmes require at least one title, and channel IDs must be unique within a writer.

See Error Handling for read and write exception behavior.

Released under the MIT License.