我在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]-->
我想在将输入保存到db之前解析所有这些。现在我正在使用正则表达式找到'<!--'
和'-->'
之间似乎有效的所有文本,但我觉得这不是最好的方式,而且我不确定是否隐藏了来自docx文件的格式总是这样。有没有更好的方法来摆脱这些额外隐藏的东西?
答案 0 :(得分: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;