Wie ersetzen eines Absatzes von text mithilfe von OpenXML Sdk

Ich bin Parsen einige Openxml-word-Dokumente mit dem .Net OpenXml SDK 2.0. Ich brauche zu ersetzen, bestimmte Sätze mit anderen Sätzen, die als Teil der Verarbeitung. Während der Iteration über die Absätze, ich weiß, wenn ich etwas gefunden haben, was muss ich ersetzen, aber ich bin ratlos, wie ich es ersetzen können.

Zum Beispiel, können sagen, ich brauche zu ersetzen, der Satz "a contract exclusively for construction work that is not building work." mit einem html-snippet, um eine Sharepoint-Wiederverwendbare Inhalte unten.

<span class="ms-rtestate-read ms-reusableTextView" contentEditable="false" id="__publishingReusableFragment" fragmentid="/Sites/Sandbox/ReusableContent/132_.000" >a contract exclusively for construction work that is not building work.</span>

PS: ich habe das docx zu Html-Konvertierung geklappt mit xslt, so dass ist nicht ein problem in diesem Stadium

Die InnerText-Eigenschaft des Absatzes Knoten gibt mir den richtigen text, aber die innere Eigenschaft text selbst ist nicht einstellbar. So
Regex.Match(currentParagraph.InnerText, currentString).Success
gibt true zurück, und sagt mir, dass der aktuelle Absatz enthält den text den ich haben will.

Wie gesagt, InnerText selbst ist nicht einstellbar, also versuchte ich es erstellt einen neuen Absatz mit outerxml ist unten gegeben.

string modifiedOuterxml = Regex.Replace(currentParagraph.OuterXml, currentString, reusableContentString);
OpenXmlElement parent = currentParagraph.Parent;
Paragraph modifiedParagraph = new Paragraph(modifiedOuterxml);
parent.ReplaceChild<Paragraph>(modifiedParagraph, currentParagraph);

Obwohl ich bin nicht allzu besorgt über die Formatierung, die auf dieser Ebene und es scheint nicht zu haben, die outerXML zu haben scheint, zusätzliche Elemente, die die Niederlage der regex.


..."16" /><w:lang w:val="en-AU" /></w:rPr><w:t>a</w:t></w:r><w:proofErr w:type="gramEnd" /> <w:r w:rsidRPr="00C73B58"><w:rPr><w:sz w:val="16" /><w:szCs w:val="16" /><w:lang w:val="en-AU" /></w:rPr><w:t xml:space="preserve"> contract exclusively for construction work that is not building work.</w:t></w:r></w:p>

So, in Zusammenfassung, wie würde ich ersetzen Sie den text in einem Absatz von OpenXml mit anderem text. Auch bei den Kosten verlieren einige der Formatierung.

InformationsquelleAutor Chaitanya | 2010-11-25

Schreibe einen Kommentar