当前位置: 首页>>代码示例>>C#>>正文


C# Paragraph.Descendants方法代码示例

本文整理汇总了C#中Paragraph.Descendants方法的典型用法代码示例。如果您正苦于以下问题:C# Paragraph.Descendants方法的具体用法?C# Paragraph.Descendants怎么用?C# Paragraph.Descendants使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Paragraph的用法示例。


在下文中一共展示了Paragraph.Descendants方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: OXMLDocPropertyParagraphParse

        public OXMLDocPropertyParagraphParse(Paragraph paragraph)
        {
            //Поиск в параграфе Run (часть параграфа(абзаца))
            //поиск начала, разделителя и конца поля ввода свойства документа
            //имя свойства находится между началом и разделителем
            //значение свойства находится между разделителем и концом

            _paragraph = paragraph;

            var ListIndexBegin = new List<int>();
            var ListIndexSeparate = new List<int>();
            var ListIndexEnd = new List<int>();

            var runs = paragraph.Descendants<Run>().ToList(); //чтобы можно было обращатся по индексам

            //поиск индексов начала разделителя и конца
            for (int i = 0; i < runs.Count(); i++)
            {
                var field = runs[i].FirstOrDefault(x => x is FieldChar) as FieldChar;
                if (field != null)
                {
                    if (field.FieldCharType == FieldCharValues.Begin)    ListIndexBegin.Add(i);		//поиск индекса, если это "начало"
                    if (field.FieldCharType == FieldCharValues.Separate) ListIndexSeparate.Add(i);	//поиск индекса, если это "разделитель"
                    if (field.FieldCharType == FieldCharValues.End) 	 ListIndexEnd.Add(i);		//поиск индекса, если это "конец"
                }
            }

            //анализ индексов
            if ((ListIndexBegin.Count != ListIndexSeparate.Count) || (ListIndexSeparate.Count != ListIndexEnd.Count) ) throw new Exception("Ошибка поиска свойства в параграфе");
            for (int i = 0; i < ListIndexBegin.Count; i++)
            {
                if ((ListIndexBegin[i]    == -1) ||
                    (ListIndexSeparate[i] == -1) ||
                    (ListIndexEnd[i]      == -1))
                        throw new Exception("Ошибка поиска свойства в параграфе");

                if ((ListIndexBegin[i]    >= ListIndexSeparate[i]) ||
                    (ListIndexSeparate[i] >= ListIndexEnd[i]))
                        throw new Exception("Ошибка поиска свойства в параграфе");
            }

            //поиск начала и конца был опциональным (возможно потом пригодится)
            properties = new List<OXMLDocPropertyParagraph>();
            for (int i = 0; i < ListIndexSeparate.Count; i++)
            {
                var fieldName  = runs[ListIndexSeparate[i] - 1].FirstOrDefault(x => x is FieldCode) as FieldCode;
                var fieldValue = runs[ListIndexSeparate[i] + 1].FirstOrDefault(x => x is Text) as Text;

                //проверка
                if ((fieldName == null) || (fieldValue == null)) throw new Exception("Ошибка поиска свойства в параграфе");

                properties.Add( new OXMLDocPropertyParagraph(fieldName, fieldValue) );
            }
        }
开发者ID:VLunev,项目名称:RachetRR4,代码行数:54,代码来源:OXMLDocPropertyParagraphParse.cs

示例2: RemoveShadingFromParagraph

        /// <summary>
        /// Remove all Eagle generated shading from paragraph.
        /// </summary>
        /// <param name="paragraph"></param>
        public static void RemoveShadingFromParagraph(Paragraph paragraph)
        {
            var shadings = paragraph.Descendants<Shading>().ToList();

            for (int i = shadings.Count - 1; i >= 0; --i)
            {
                // <w:shd w:val="clear" w:color="auto" w:fill="33CCCC"/>
                if (shadings[i].Fill == "33CCCC")
                {
                    shadings[i].Remove();
                }
            }
        }
开发者ID:cthiange,项目名称:eagle,代码行数:17,代码来源:OxmlTools.cs

示例3: RemoveBookmarksFromParagraph

        /// <summary>
        /// Remove all Eagle bookmarks from paragraph.
        /// </summary>
        /// <param name="paragraph"></param>
        public static void RemoveBookmarksFromParagraph(Paragraph paragraph)
        {
            List<string> removedStartIds = new List<string>();

            var bookmarkStarts = paragraph.Descendants<BookmarkStart>().ToList();

            for (int i = bookmarkStarts.Count - 1; i >= 0; --i)
            {
                if (bookmarkStarts[i].Name.Value.StartsWith("_eagleaddin_"))
                {
                    removedStartIds.Add(bookmarkStarts[i].Id);
                    bookmarkStarts[i].Remove();
                }
            }

            var bookmarkEnds = paragraph.Descendants<BookmarkEnd>().ToList();
            for (int i = bookmarkEnds.Count - 1; i >= 0; --i)
            {
                if (removedStartIds.Contains(bookmarkEnds[i].Id))
                {
                    bookmarkEnds[i].Remove();
                }
            }
        }
开发者ID:cthiange,项目名称:eagle,代码行数:28,代码来源:OxmlTools.cs

示例4: FillText

        /*
        private void FillText(ref Run runElement, string strFormat)
        {
            if (runElement.HasChildren)
            {
                runElement.GetFirstChild<Text>().Text = strFormat;
                //runElement.RemoveAllChildren<Text>();
                //runElement.AppendChild<Text>(new Text(GeneralFormatter.ToString(rows[i], property.FormatString)));
            }
            else
            {
                runElement.AppendChild<Text>(new Text(strFormat));
            }
        } */

        private Run GetRunElement(Paragraph p)
        {
            var runs = p.Descendants<Run>();
            Run runElement = null;
            if (runs.Count() > 0)
            {
                runElement = p.Descendants<Run>().First();
            }
            else
            {
                runElement = p.AppendChild<Run>(new Run());
            }
            return runElement;
        }
开发者ID:jerryshi2007,项目名称:AK47Source,代码行数:29,代码来源:GeneralDataProcessor.cs

示例5: OpenXmlElementTraversingMethodsTest

        public void OpenXmlElementTraversingMethodsTest()
        {
            Paragraph para = new Paragraph();
            Run r1 = para.AppendChild(new Run());
            Bold b1 = r1.AppendChild(new RunProperties()).AppendChild(new Bold());
            Text t1 = r1.AppendChild(new Text());

            Run r2 = para.AppendChild(new Run());
            r2.AppendChild(new Text());

            Run r3 = para.AppendChild(new Run());

            Assert.Equal(7, para.Descendants().Count());
            Assert.Equal(3, r1.Descendants().Count());
            Assert.Equal(1, r2.Descendants().Count());
            Assert.Equal(0, r3.Descendants().Count());

            Assert.Same(r1, para.Descendants().First());
            Assert.Same(b1, para.Descendants().ElementAt(2));
            Assert.Same(t1, para.Descendants().ElementAt(3));
            Assert.Same(r2, para.Descendants().ElementAt(4));
            Assert.Same(r3, para.Descendants().Last());

            // ancestors
            Assert.Equal(0, para.Ancestors().Count());
            Assert.Equal(0, para.Ancestors<Body>().Count());
            Assert.Equal(1, r1.Ancestors().Count());
            Assert.Equal(1, r1.Ancestors<Paragraph>().Count());
            Assert.Equal(0, r1.Ancestors<Body>().Count());
            Assert.Equal(1, r3.Ancestors().Count());
            Assert.Equal(1, r3.Ancestors<Paragraph>().Count());
            Assert.Equal(0, r3.Ancestors<Body>().Count());
            Assert.Equal(2, t1.Ancestors().Count());
            Assert.Equal(1, t1.Ancestors<Paragraph>().Count());
            Assert.Equal(0, t1.Ancestors<Body>().Count());
            Assert.Equal(3, b1.Ancestors().Count());
            Assert.Equal(1, b1.Ancestors<Paragraph>().Count());
            Assert.Equal(1, b1.Ancestors<Run>().Count());
            Assert.Equal(1, b1.Ancestors<RunProperties>().Count());
            Assert.Equal(0, b1.Ancestors<Body>().Count());

            Assert.Same(para, r1.Ancestors().First());
            Assert.Same(para, r1.Ancestors<Paragraph>().First());
            Assert.Same(r1, t1.Ancestors().First());
            Assert.Same(para, t1.Ancestors().Last());
            Assert.Same(r1, t1.Ancestors<Run>().First());
            Assert.Same(para, t1.Ancestors<Paragraph>().First());
            Assert.Same(para, b1.Ancestors().Last());
            Assert.Same(r1, b1.Ancestors().ElementAt(1));

            // IsBefore() / IsAfter()
            Assert.False(para.IsBefore(para));
            Assert.False(para.IsAfter(para));
            Assert.False(r2.IsBefore(r2));
            Assert.False(r2.IsAfter(r2));

            Assert.True(para.IsBefore(r1));
            Assert.False(para.IsAfter(r1));
            Assert.True(para.IsBefore(b1));
            Assert.False(para.IsAfter(b1));
            Assert.False(r1.IsBefore(para));
            Assert.True(r1.IsAfter(para));
            Assert.False(r1.IsBefore(para));
            Assert.True(r1.IsAfter(para));

            Assert.True(r1.IsBefore(r2));
            Assert.False(r1.IsAfter(r2));
            Assert.False(r3.IsBefore(r1));
            Assert.True(r3.IsAfter(r1));
            Assert.False(b1.IsAfter(r2));
            Assert.True(b1.IsBefore(r2));

            Assert.True(r1.IsBefore(b1));
            Assert.False(r1.IsAfter(b1));
            Assert.True(b1.IsAfter(r1));
            Assert.False(b1.IsBefore(r1));

            Paragraph p2 = new Paragraph();
            Run p2r1 = p2.AppendChild(new Run());

            Assert.False(p2.IsBefore(para));
            Assert.False(p2.IsAfter(para));
            Assert.False(p2r1.IsAfter(para));
            Assert.False(p2r1.IsBefore(para));

            // ElementsBefore / ElementsAfter
            Assert.False(para.ElementsBefore().Any());
            Assert.False(para.ElementsAfter().Any());
            Assert.True(r1.ElementsAfter().Any());
            Assert.False(r1.ElementsBefore().Any());
            Assert.False(r3.ElementsAfter().Any());
            Assert.True(r3.ElementsBefore().Any());
            Assert.True(r2.ElementsAfter().Any());
            Assert.True(r2.ElementsBefore().Any());
            Assert.Same(r1, r3.ElementsBefore().First());
            Assert.Same(r2, r3.ElementsBefore().Last());
            Assert.Same(r2, r1.ElementsAfter().First());
            Assert.Same(r3, r1.ElementsAfter().Last());
            Assert.False(b1.ElementsBefore().Any());
            Assert.False(b1.ElementsAfter().Any());
//.........这里部分代码省略.........
开发者ID:eriawan,项目名称:Open-XML-SDK,代码行数:101,代码来源:OpenXmlElementTest.cs

示例6: GenerateRFC

        public static void GenerateRFC(RequestForChangeBE rfc, DeliveryInfoBE deliveryInfo, String delvEnvironment, ApplicationConfigBE appConfig)
        {
            //path to the RFC template
            String rfcTemplatePath = ConstantBE.TEMPLATEPATH + '\\' + deliveryInfo.AppQuadri + ".docx";

            String rfcNewName = String.Empty;
            String outputPath = String.Empty;
            String directoryPath = String.Empty;
            String filename = String.Empty;

            #region RFC Name Formatting And Output Path

            if (delvEnvironment == "INT")
            {
                //RFC_IPRI_ITF594_2.2.0_20120328_INT
                rfcNewName = String.Format(ConstantBE.RFCFORMATINTANDUAT, deliveryInfo.AppQuadri,
                    "ITF" + deliveryInfo.ITFNo, deliveryInfo.GetVersion(true, false), rfc.SubmittedDate.ToString("yyyyMMdd"), "INT");

                outputPath = deliveryInfo.RootDirectoryPath + '\\' + "Internals" + '\\' +
                            "ITF" + deliveryInfo.ITFNo + '\\' + "RFC\\" + rfcNewName + ".docx";
            }
            else if (delvEnvironment == "UAT")
            {
                //RFC_IPRI_ITF594_2.2.0_20120328_INT
                rfcNewName = String.Format(ConstantBE.RFCFORMATINTANDUAT, deliveryInfo.AppQuadri,
                    "ITF" + deliveryInfo.ITFNo, deliveryInfo.GetVersion(true, false), rfc.SubmittedDate.ToString("yyyyMMdd"), "UAT");

                outputPath = deliveryInfo.RootDirectoryPath + '\\' + "Internals" + '\\' +
                        "ITF" + deliveryInfo.ITFNo + '\\' + "RFC\\" + rfcNewName + ".docx";
            }
            else if (delvEnvironment == "STA")
            {
                //get the integer path from the string
                String integerPart = Regex.Match(deliveryInfo.NextExternalDirectory, @"\d+").Value;

                //RFC_IPRI_Liv_2_STA
                rfcNewName = String.Format(ConstantBE.RFCFORMATSTAANDPROD, deliveryInfo.AppQuadri,
                    "Liv", integerPart, "STA");

                outputPath = deliveryInfo.RootDirectoryPath + '\\' + "Externals" + '\\' +
                    deliveryInfo.NextExternalDirectory + '\\' + "DOCUMENTATION\\" + rfcNewName + ".docx";
            }
            else
            {
                //get the integer path from the string
                String integerPart = Regex.Match(deliveryInfo.NextExternalDirectory, @"\d+").Value;

                //RFC_IPRI_Liv_2_PROD
                rfcNewName = String.Format(ConstantBE.RFCFORMATSTAANDPROD, deliveryInfo.AppQuadri,
                    "Liv", integerPart, "PROD");

                outputPath = deliveryInfo.RootDirectoryPath + '\\' + "Externals" + '\\' +
                    deliveryInfo.NextExternalDirectory + '\\' + "DOCUMENTATION\\" + rfcNewName + ".docx";
            }

            #endregion

            DirectoryManagementDA.CopyFileAndRename(rfcTemplatePath, outputPath);

            //open the copied file in its new location for modification
            using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(outputPath, true))
            {
                //get the document body
                MainDocumentPart mainDocPart = wordDoc.MainDocumentPart;

                #region Change Identification

                #region Requestor Information

                //get only the change identification body from the document
                SdtBlock rfcBody = OpenXmlHelpers.GetContentControl(mainDocPart, ConstantBE.CHANGEIDENTIFICATIONBODY);

                //Get the table in the change identification tag
                Table rfcBodyTable = rfcBody.Descendants<Table>().Single();

                //Entity
                rfcBodyTable.Elements<TableRow>().ElementAt(3).Elements<SdtCell>()
                    .ElementAt(0).Descendants<Text>().Single().Text = rfc.Entity;

                //Submitted by
                rfcBodyTable.Elements<TableRow>().ElementAt(3).Elements<SdtCell>()
                    .ElementAt(1).Descendants<Text>().Single().Text = rfc.SubmittedBy;

                //Sumitted date
                rfcBodyTable.Elements<TableRow>().ElementAt(3).Elements<SdtCell>()
                    .ElementAt(2).Descendants<Text>().Single().Text = rfc.SubmittedDate.ToString("dd/MM/yy");

                #endregion

                #region Qualification Of Request Checkbox

                Paragraph qualOfRequestPara = new Paragraph();

                //based on the qualification of request we get the corresponding
                //element
                switch (rfc.QualificationOfRequest)
                {
                    case "Major":
                        qualOfRequestPara = rfcBodyTable.Elements<TableRow>().ElementAt(5)
                            .Elements<TableCell>().ElementAt(0).Elements<Paragraph>().FirstOrDefault();
//.........这里部分代码省略.........
开发者ID:shaanino,项目名称:dmt,代码行数:101,代码来源:RequestForChangeDA.cs


注:本文中的Paragraph.Descendants方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。