1

MVC 3 アプリにリッチ テキスト エディターがあります。ユーザーが Microsoft Word からテキストをコピーしてエディターに貼り付けようとしない限り、問題なく動作します。これが起こると、このような追加の隠し文字が表示されます

<!--[if gte vml 1]><v:shapetype
 id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
 path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
 <v:stroke joinstyle="miter"/>
 <v:formulas>
  <v:f eqn="if lineDrawn pixelLineWidth 0"/>
  <v:f eqn="sum @0 1 0"/>
  <v:f eqn="sum 0 0 @1"/>
  <v:f eqn="prod @2 1 2"/>
  <v:f eqn="prod @3 21600 pixelWidth"/>
  <v:f eqn="prod @3 21600 pixelHeight"/>
  <v:f eqn="sum @0 0 1"/>
  <v:f eqn="prod @6 1 2"/>
  <v:f eqn="prod @7 21600 pixelWidth"/>
  <v:f eqn="sum @8 21600 0"/>
  <v:f eqn="prod @7 21600 pixelHeight"/>
  <v:f eqn="sum @10 21600 0"/>
 </v:formulas>
 <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
 <o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="Picture_x0020_1" o:spid="_x0000_i1025" type="#_x0000_t75"
 style='width:34.5pt;height:20.25pt;visibility:visible;mso-wrap-style:square'>
</v:shape><![endif]-->

入力をデータベースに保存する前に、これらすべてを解析したいと思います。現在、正規表現を使用してその間のすべてのテキストを検索していますが'<!--''-->' それは機能しているようですが、これは最善の方法ではないと感じており、docx ファイルの隠しファイルが常にこのようにフォーマットされているかどうかはわかりません。この余分な隠し要素を取り除くためのより良い方法はありますか?

4

1 に答える 1

2

docxOpenXMLフォーマットを使用しているため、任意のxml parser. たとえば、の場合、c# 3.5 and higherLinq-To-Xml を使用できます。これは、すべてのコメントを見つける方法です。

var document = XDocument.Load("test.xml");

var comments =  from node in document.Elements().DescendantNodesAndSelf()
        where node.NodeType == XmlNodeType.Comment
        select node as XComment;
于 2013-03-28T19:26:52.850 に答える