C# 从单独文件中的类返回XElement
我是C#的新手。我在一个单独的文件中创建了一个类来处理文本。main和text processing类都位于TextProcessing命名空间中。这不是整个课程,只是开始:C# 从单独文件中的类返回XElement,c#,openxml,C#,Openxml,我是C#的新手。我在一个单独的文件中创建了一个类来处理文本。main和text processing类都位于TextProcessing命名空间中。这不是整个课程,只是开始: using System; using System.Linq; using System.Xml.Linq; using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Wordprocessing; namespace TextProcessing {
using System;
using System.Linq;
using System.Xml.Linq;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Wordprocessing;
namespace TextProcessing
{
public class Para2XML
{
private Paragraph XMLP;
public Para2XML(string PText)
{
var xmlParagraph = XElement.Parse(PText);
var XMLP = (Paragraph)TransformElementToOpenXml(xmlParagraph);
}
public Paragraph PReturn
{
get { return XMLP; }
}
private static OpenXmlElement TransformElementToOpenXml(XElement element)
{
return element.Name.LocalName switch
{
"p" => new Paragraph(element.Nodes().Select(TransformNodeToOpenXml)),
"em" => new Run(new RunProperties(new Italic()), CreateText(element.Value)),
"b" => new Run(new RunProperties(new Bold()), CreateText(element.Value)),
_ => throw new ArgumentOutOfRangeException()
};
}
回到我的程序中,这是我实例化类的地方:
foreach (var bkmkStart in wordDoc.MainDocumentPart.RootElement.Descendants<BookmarkStart>())
{
if (bkmkStart.Name == "ForewordText")
{
forewordbkmkParent = bkmkStart.Parent;
for (var y = 0; y <= ForewordArray.Length - 1; y++)
{
Para2XML TextProcessP = new Para2XML(ForewordArray[y]);
forewordbkmkParent.InsertBeforeSelf(PReturn);
}
}
}
foreach(wordDoc.MainDocumentPart.RootElement.subjections()中的var bkmkStart)
{
如果(bkmkStart.Name==“前言文本”)
{
PreforderBKMKParent=bkmkStart.Parent;
对于(var y=0;y,必须写入textprocesp.PReturn
。即,对象的名称后跟一个点和属性的名称
forewordbkmkParent.InsertBeforeSelf(TextProcessP.PReturn);
局部变量和方法参数的名称通常写在camleCase中。类级变量,即所谓的字段,用下划线+camelCase(即\u camelCase
)编写。所有其他标识符都写在PascalCase
(属性、类名称空间等)中
您不需要重复类型的名称两次。编写var variableName=new TypeName();
我更喜欢对集合使用复数形式。而不是将集合类型附加到名称。例如,forewords
而不是forewordArray
。将鼠标悬停在名称上方会显示工具提示中的类型
var processor = new Para2XML(forewords[y]);
forewordbkmkParent.InsertBeforeSelf(processor.PReturn);
谢谢,TextProcessP.PReturn成功了。完成后我会整理美学。