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

docx正在使用OpenXML格式,因此您可以尝试使用任何xml parser. 例如,对于c# 3.5 and higher,您可以使用 Linq-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 回答