В настоящее время я сталкиваюсь с проблемой с программным обеспечением, с которым я работаю, это программное обеспечение получает от внешнего программного обеспечения несколько Xml-файлов, которые нам нужно обработать, теперь наша проблема заключается в том, что эти Xml-файлы содержат множество узлов, которые совершенно бесполезны и также сделать файлы (xmls) очень тяжелыми из-за этого, в результате программа работает очень медленно для обработки каждого из xmls, это должно быть изменено в будущем, и я хотел бы доказать, что, удалив эти узлы, мы улучшим наше время обработки много, теперь я хотел бы в качестве первого шага сделать это вручную, используя образец xml и применяя синтаксис регулярного выражения для удаления всех узлов с пустым свойством значения, это синтаксис, который я использую сейчас и через функция замены в блокноте, я могу удалить эти строки, а затем удалить пустые строки:
<.*(\s\w+?[^=]*?="[^"]*?")*?\s+?value="[""]*?".*?>
Пример
<TEST_NODE value="1"/>
<TEST_NODE value=""/>
<TEST_NODE value="0"/>
В моем случае узлы могут называться по-разному и могут иметь разные свойства, но мне следует заботиться о тех, которые содержат что-то в свойстве значения, поэтому в этом случае я должен удалить вторую строку
Похоже, это работает нормально, однако с очень большими файлами (10 МБ) функция замены блокнота ++, похоже, имеет проблемы, и она перестает работать должным образом, ломая множество тегов...
Я пробовал использовать другое программное обеспечение под названием «Ultraedit», но там синтаксис, я думаю, отличается, так как я могу использовать регулярные выражения, но мне нужно выбрать один из этих вариантов: Perl, Unix, Ultraedit; только используя «Perl», я могу сделать эту замену, но и там, для больших файлов это не работает, и я получаю следующую ошибку:
Сложность сопоставления выражения превысила доступные ресурсы.
Может ли кто-нибудь помочь мне с этим? к сожалению, я даже не так хорошо разбираюсь в Regex, и я не уверен, хорош ли приведенный выше код или плох.