コード例 #1
0
        private static Epub3NavLi ReadEpub3NavLi(XElement epub3NavLiNode)
        {
            Epub3NavLi epub3NavLi = new Epub3NavLi();

            foreach (XElement navLiChildNode in epub3NavLiNode.Elements())
            {
                switch (navLiChildNode.GetLowerCaseLocalName())
                {
                case "a":
                    Epub3NavAnchor epub3NavAnchor = ReadEpub3NavAnchor(navLiChildNode);
                    epub3NavLi.Anchor = epub3NavAnchor;
                    break;

                case "span":
                    Epub3NavSpan epub3NavSpan = ReadEpub3NavSpan(navLiChildNode);
                    epub3NavLi.Span = epub3NavSpan;
                    break;

                case "ol":
                    Epub3NavOl epub3NavOl = ReadEpub3NavOl(navLiChildNode);
                    epub3NavLi.ChildOl = epub3NavOl;
                    break;
                }
            }
            return(epub3NavLi);
        }
コード例 #2
0
        private static List <EpubNavigationItemRef> GetNavigationItems(EpubBookRef bookRef, Epub3NavOl epub3NavOl)
        {
            List <EpubNavigationItemRef> result = new List <EpubNavigationItemRef>();

            if (epub3NavOl != null && epub3NavOl.Lis != null)
            {
                foreach (Epub3NavLi epub3NavLi in epub3NavOl.Lis)
                {
                    if (epub3NavLi != null && (epub3NavLi.Anchor != null || epub3NavLi.Span != null))
                    {
                        if (epub3NavLi.Anchor != null)
                        {
                            Epub3NavAnchor        navAnchor         = epub3NavLi.Anchor;
                            EpubNavigationItemRef navigationItemRef = EpubNavigationItemRef.CreateAsLink();
                            navigationItemRef.Title = GetFirstNonEmptyHeader(navAnchor.Text, navAnchor.Title, navAnchor.Alt);
                            navigationItemRef.Link  = new EpubNavigationItemLink(navAnchor.Href);
                            navigationItemRef.HtmlContentFileRef = GetHtmlContentFileRef(bookRef, navigationItemRef.Link.ContentFileName);
                            navigationItemRef.NestedItems        = GetNavigationItems(bookRef, epub3NavLi.ChildOl);
                            result.Add(navigationItemRef);
                        }
                        else if (epub3NavLi.Span != null)
                        {
                            Epub3NavSpan          navSpan           = epub3NavLi.Span;
                            EpubNavigationItemRef navigationItemRef = EpubNavigationItemRef.CreateAsHeader();
                            navigationItemRef.Title       = GetFirstNonEmptyHeader(navSpan.Text, navSpan.Title, navSpan.Alt);
                            navigationItemRef.NestedItems = GetNavigationItems(bookRef, epub3NavLi.ChildOl);
                            result.Add(navigationItemRef);
                        }
                    }
                }
            }
            return(result);
        }
コード例 #3
0
        private static Epub3NavSpan ReadEpub3NavSpan(XElement epub3NavSpanNode)
        {
            Epub3NavSpan epub3NavSpan = new Epub3NavSpan();

            foreach (XAttribute navSpanNodeAttribute in epub3NavSpanNode.Attributes())
            {
                string attributeValue = navSpanNodeAttribute.Value;
                switch (navSpanNodeAttribute.GetLowerCaseLocalName())
                {
                case "title":
                    epub3NavSpan.Title = attributeValue;
                    break;

                case "alt":
                    epub3NavSpan.Alt = attributeValue;
                    break;
                }
            }
            epub3NavSpan.Text = epub3NavSpanNode.Value.Trim();
            return(epub3NavSpan);
        }