Comment remplacer un Paragraphe du texte à l'aide d'OpenXML Sdk

Je suis l'analyse d'un Openxml des documents word à l'aide de l' .Net SDK OpenXml 2.0. J'ai besoin de remplacer certaines phrases avec d'autres phrases comme une partie du traitement. Lors de l'itération sur les paragraphes, je sais que quand j'ai trouvé quelque chose que je dois remplacer, mais je suis perplexe quant à la façon que je puisse le remplacer.

Par exemple, disons que j'ai besoin de remplacer la phrase "a contract exclusively for construction work that is not building work." avec un extrait de code html pour Sharepoint contenu Réutilisable ci-dessous.

<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: j'ai eu le docx en Html, conversion travaillé à l'aide de xslt, donc c'est pas un problème à ce stade

La propriété InnerText du Paragraphe nœud me donne le bon texte, mais le texte interne de la propriété elle-même n'est pas réglable. Donc
Regex.Match(currentParagraph.InnerText, currentString).Success
retourne true et me dit que l'actuel paragraphe contient le texte que je veux.

Comme je l'ai dit, InnerText lui-même n'est pas réglable, donc j'ai essayé de créé un nouveau paragraphe à l'aide de outerxml est donnée ci-dessous.

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

Même si je ne suis pas trop inquiet au sujet de la mise en forme à ce niveau et il ne semble pas en avoir la outerXML semble avoir des éléments supplémentaires que la défaite de la 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>

Donc, en résumé, comment pourrais-je remplacer le texte dans un Paragraphe de OpenXml avec d'autres textes. Même au détriment de la perte de certains de la mise en forme.

OriginalL'auteur Chaitanya | 2010-11-25