正则表达式为mal形成的XML添加CDATA

时间:2010-06-01 17:03:01

标签: windows xml notepad++

我有这个巨大的xml文件(13 mb)并且它有一些格式错误的值。以下是xml的示例:

<propertylist>
        <adprop index="0" proptype="type" value="Ft"/>
        <adprop index="0" proptype="category" value="Bs"/>
        <adprop index="0" proptype="subcategory" value="Bsm"/>
        <adprop index="0" proptype="description" value="MOONEN CUSTOM 58"/> 
</propertylist>

现在没问题。但是我需要的许多其他节点都没有封装在CDATA中。

是给我带来问题的节点
<adprop index="0" proptype="description" value=""/> 

我创建了这个正则表达式:

<adprop index="0" proptype="description" value="(.+)"\/>

捕获该节点并将其替换为:

<adprop index="0" proptype="description" value="<![CDATA[\1]]>"\/>

我在记事本++中运行它并且它可以工作。

唯一的问题是当值=“”是多行的,如:

  <adprop index="0" proptype="description" value="cutter that has demonstrated her offshore capabiliti from there to the Canaries with her current owner. 

Spacious homely interior with over 2m headroom and heaps of" />

这个失败了,有很多这样的。

任何人都可以在正则表达式中帮助我,这样我就可以在多线时抓住它的价值吗?

由于

1 个答案:

答案 0 :(得分:0)

尝试将\r\n添加到正则表达式中以包含换行符,因为点字符匹配“除换行符之外的任何字符”。我不确定Notepad ++采用什么正则表达式语法,但它应该在帮助中列出这一点。 (我使用的编辑器UltraEdit将允许其正则表达式引擎中的换行符。)