Regex для добавления CDATA для неправильно сформированного XML - PullRequest
0 голосов
/ 01 июня 2010

У меня есть этот огромный XML-файл (13 МБ), и он имеет некоторые искаженные значения.Вот пример 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 голосов
/ 01 июня 2010

Попробуйте добавить \r или \n к своему регулярному выражению, чтобы включить новые строки, когда символ точки соответствует «любому символу, кроме новых строк». Я не уверен, что синтаксис регулярного выражения принимает Notepad ++, но он должен перечислить это в справке. (Используемый мной редактор UltraEdit разрешит переводы строк в своем движке регулярных выражений.)

...