本文整理汇总了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) );
}
}
示例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();
}
}
}
示例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();
}
}
}
示例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;
}
示例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());
//.........这里部分代码省略.........
示例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();
//.........这里部分代码省略.........