Bonjour,
Il y a quelques mois, j'ai ouvert un post et je pensais l'avoir résolu (certes de manière peu orthodoxe mais résolu quand même).
Il s'agit du post suivant :
https://www.developpez.net/forums/d1...er-smart-tags/
Pour résumer il s'agissait d'enlever les smartTag d'un document word tout en gardant son contenu.
Le cas que je cherchais à résoudre était toujours le même mais je le rencontrais plusieurs fois dans le document
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <w:smartTag w:uri="urn:schemas-microsoft-com:office:smarttags" w:element="metricconverter"> <w:smartTagPr> <w:attr w:name="ProductID" w:val="1 A" /> </w:smartTagPr> <w:r> <w:t>1 A</w:t> </w:r> </w:smartTag>
Je pensais l'avoir résolu avec le code suivant (sourceBody est de type DocumentFormat.OpenXml.Wordprocessing.Body) :
Mais on viens de m'apporter un document dans lequel ma rustine inélégante pose plus soucis que le problème initial.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 sourceBody.InnerXml = Regex.Replace( sourceBody.InnerXml, @"(<\w*:smartTag .*>\n? *<\S*:smartTagPr>.*<\/\S*:smartTagPr>\n?|<\/\w:smartTag>\n?)", String.Empty, RegexOptions.Singleline);
Dans ce document je rencontre mon cas initial mais également et plusieurs fois un autre cas :
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <w:smartTag w:uri="urn:schemas-microsoft-com:office:smarttags" w:element="PersonName" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> <w:smartTagPr> <w:attr w:name="ProductID" w:val="LA REPARTITION ACTUELLE." /> </w:smartTagPr> <w:r> <w:rPr> <w:b /> <w:bCs /> </w:rPr> <w:t>LA REPARTITION ACTUELLE.</w:t> </w:r> </w:smartTag>
Le texte change à chaque fois dans le smartTag mais semble toujours commencer par "LA REPARTITION" (sans doute une coïncidence mais le précise au cas où).
Mon code actuel à pour effet de m'enlever tout le contenu entre le premier smartTag "LA REPARTITION" et le premier smartTag "1 A" et du coup je perd une grosse partie du document.
J'ai besoin de vos conseils pour passer de ceci
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <w:smartTag w:uri="urn:schemas-microsoft-com:office:smarttags" w:element="PersonName" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> <w:smartTagPr> <w:attr w:name="ProductID" w:val="LA REPARTITION ACTUELLE." /> </w:smartTagPr> <w:r> <w:rPr> <w:b /> <w:bCs /> </w:rPr> <w:t>LA REPARTITION ACTUELLE.</w:t> </w:r> </w:smartTag>
a ceci (et ce, quelque soit le contenu du smartTag)
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <w:r> <w:rPr> <w:b /> <w:bCs /> </w:rPr> <w:t>LA REPARTITION ACTUELLE.</w:t> </w:r>
Edit :
Je pense que ceci ferait également l'affaire si c'est plus facile
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <!--<w:smartTag w:uri="urn:schemas-microsoft-com:office:smarttags" w:element="PersonName" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">--> <!--<w:smartTagPr> <w:attr w:name="ProductID" w:val="LA REPARTITION ACTUELLE." /> </w:smartTagPr>--> <w:r> <w:rPr> <w:b /> <w:bCs /> </w:rPr> <w:t>LA REPARTITION ACTUELLE.</w:t> </w:r> <!--</w:smartTag>-->
Merci.
Partager