public static void SaveAsXml(IEnumerable<Chapter> chapters, string path)
{
var writer = new XmlTextWriter(path, Encoding.GetEncoding("ISO-8859-1"));
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();
writer.WriteDocType("Chapters", null, "matroskachapters.dtd", null);
writer.WriteStartElement("Chapters");
writer.WriteStartElement("EditionEntry");
foreach (var chapter in chapters.Where(chapter => chapter.Keep))
{
writer.WriteStartElement("ChapterAtom");
writer.WriteStartElement("ChapterTimeStart");
writer.WriteString(chapter.StartTimeXmlFormat); // 00:00:00.000
writer.WriteEndElement();
writer.WriteStartElement("ChapterDisplay");
writer.WriteStartElement("ChapterString");
writer.WriteString(chapter.Title); // Chapter 1
writer.WriteEndElement();
if (chapter.Language != null && chapter.Language != Language.Undetermined)
{
writer.WriteStartElement("ChapterLanguage");
writer.WriteString(chapter.Language.ISO_639_2); // eng
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();
}