private static void FillChaptersByNcx(IList <Chapter> chapters, Ncx ncx, string opfDirectory) { if (chapters != null && ncx != null && ncx.NavMap != null && ncx.NavMap.NavPoints != null) { foreach (var navPoint in ncx.NavMap.NavPoints) { chapters.Add(GetChapterFromNavPoint(navPoint, opfDirectory)); } } }
private void GenerateTocNcx(RuntimeSettings settings, ILog log) { log.Info("Creating epub toc.ncx..."); var output = settings.OutputDirectory.Combine("epubtemp\\OPS\\toc.ncx"); Ncx toc = new Ncx { Version = "2005-1", Xmlns = "http://www.daisy.org/z3986/2005/ncx/", Lang = "en", Head = new Head { Meta = new List <Meta> { new Meta { Name = "dtb:uid", Content = "book" }, } }, DocTitle = new DocTitle { Text = settings.Configuration.Metadata.Title }, NavMap = new NavMap { NavPoint = new NavPoint { Id = "root", NavLabel = new NavLabel { Text = "Start" }, Content = new Content { Src = "nav.xhtml", }, NavPoints = FillNavPoints(settings), } } }; var namespaces = new List <(string prefix, string namespac)> { ("", "http://www.daisy.org/z3986/2005/ncx/"), ("ncx", "http://www.daisy.org/z3986/2005/ncx/") }; output.SerializeXml(toc, log, namespaces); }
public static Ncx Read(Stream stream) { Ncx result = null; using (var streamReader = new StreamReader(stream)) { string xmlStr = streamReader.ReadToEnd(); var document = XElement.Parse(xmlStr.FixXml()); var xNamespace = document.GetDefaultNamespace(); result = ParseNcx(document) ?? throw new InvalidDataException("invalid data of ncx file: ncx"); } return(result); }
private static Ncx ParseNcx(XElement element) { Ncx result = null; if (element != null && element.Name.LocalName == ELEMENT_NCX) { var xNamespace = element.Name.Namespace; result = new Ncx { Version = element.Attribute(ATTRIBUTE_VERSION)?.Value, Language = element.Attribute(Const.ATTRIBUTE_LANGUAGE)?.Value, NavMap = ParseNavMap(element.Element(xNamespace + ELEMENT_NAVMAP)), }; } return(result); }
public static void Write(Ncx file, Stream stream) { }