如何将节内容从一个文档复制到另一文档的节

时间:2020-09-19 16:39:45

标签: openxml-sdk

我正在尝试将部分内容从一个文档复制到另一文档的同一部分。 我可以使用标题从文档中获取该部分的内容,但是当将此xml内容替换为另一个文档部分时,该文档不会打开。任何链接或示例都将有助于完成此方案。我正在使用开放式XML sdk .net核心c#

//get all descendants with pstyle
            var elements = xProcessDoc.Descendants(w + "pStyle");
            //get all pstyle elements with Heading 1 - section headers
            var existList = (from el in elements
                             where (string)el.Attribute(w + "val") == "Heading1"
                             select el).ToArray();
            if (sectionNumber != null)
            {
                var sectNumber = Convert.ToInt16(sectionNumber);
                //extraction logic for section
                var start = existList[sectNumber - 1];
                var ptag = start.Parent.Parent;
                //Remove all elements before the ptag
                IEnumerable<XElement> ptagBeforeElements = ptag.ElementsBeforeSelf();
                xProcessDoc.Descendants().Where(x => ptagBeforeElements.Contains(x)).Remove();

                //Remove all elements after the section end
                var end = existList[sectNumber];
                var endtag = end.Parent.Parent;
                IEnumerable<XElement> endtagAfterElements = endtag.ElementsAfterSelf();
                xProcessDoc.Descendants().Where(x => endtagAfterElements.Contains(x)).Remove();

                // remove the endth element
                var endtagelements = endtag.Elements();
                xProcessDoc.Descendants().Where(x => endtagelements.Contains(x)).Remove();
                var childElements = xProcessDoc.Root.Elements();// xProcessDoc.Root.Element(w + "body").Elements();
                var sectionxml = new StringBuilder();
                foreach (var item in childElements)
                {
                    sectionxml.Append(item.ToString() + "\n");
                }

0 个答案:

没有答案