Ejemplo n.º 1
0
        public static bool SplitElements(DomElementList SourceList, bool deeply)
        {
            bool           result   = false;
            DomElementList tempList = new DomElementList();

            tempList.AddRange(SourceList);
            foreach (DomElement element in tempList)
            {
                if (element is DomStringElement)
                {
                    // 将文本元素拆分成多个字符元素
                    int            index = SourceList.IndexOf(element);
                    DomElementList cs    = ((DomStringElement)element).SplitChars();
                    SourceList.RemoveAt(index);
                    for (int iCount = 0; iCount < cs.Count; iCount++)
                    {
                        SourceList.Insert(index + iCount, cs[iCount]);
                    }
                    result = true;
                }
                else if (element is DomContainerElement)
                {
                    SplitElements(((DomContainerElement)element).Elements, deeply);
                    //SourceList.Add(element);
                }
            }
            return(result);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 删除元素列表中自动创建的段落标记元素
 /// </summary>
 /// <param name="elements">文档元素列表</param>
 /// <returns>操作是否改变了列表内容</returns>
 public static bool RemoveAutoCreateParagraphFlag(DomElementList elements)
 {
     if (elements != null && elements.Count > 0)
     {
         if (elements.LastElement is DomParagraphFlagElement)
         {
             DomParagraphFlagElement p = (DomParagraphFlagElement)elements.LastElement;
             if (p.AutoCreate)
             {
                 elements.RemoveAt(elements.Count - 1);
                 return(true);
             }
         }
     }
     return(false);
 }
Ejemplo n.º 3
0
        public static DomElementList MergeParagraphs(
            DomElementList sourceElements,
            bool includeSelectionOnly)
        {
            if (sourceElements == null || sourceElements.Count == 0)
            {
                return(null);
                //throw new ArgumentNullException("sourceElements");
            }
            DomElementList      list     = MergeElements(sourceElements, includeSelectionOnly);
            DomElementList      result   = new DomElementList();
            DomDocument         document = sourceElements[0].OwnerDocument;
            DomParagraphElement p        = new DomParagraphElement();

            p.OwnerDocument = document;
            result.Add(p);
            foreach (DomElement element in list)
            {
                DomParagraphElement paragraph = (DomParagraphElement)result[result.Count - 1];
                if (element is DomParagraphFlagElement)
                {
                    paragraph.StyleIndex = element.StyleIndex;
                    paragraph.Elements.AddRaw(element);

                    paragraph = new DomParagraphElement();
                    paragraph.OwnerDocument = document;
                    result.Add(paragraph);
                }
                else
                {
                    paragraph.Elements.AddRaw(element);
                }
            }
            DomParagraphElement lastP = (DomParagraphElement)result[result.Count - 1];

            if (lastP.Elements.Count == 0)
            {
                // 删除最后一个没有任何内容的段落对象
                result.RemoveAt(result.Count - 1);
            }
            return(result);
        }