Как искать любые файлы, которые не содержат правильный корневой элемент XML?

Мне нужно иметь возможность искать несколько тысяч файлов XHTML и XML и видеть список файлов, которые не содержат следующую строку в первой строке:

<?xml version="1.0" encoding="utf-8"?>

Как бы я поступил так? Я думал, что смогу сделать это в Notepad++, используя функцию поиска в файлах, но я не вижу способа найти строку, которая не найдена и / или правильно отформатирована, и вывести ее в виде списка файлов.

2 ответа

Решение

Используйте Agent Ransack и установите для него поиск только по типам файлов.xml. Если вы знаете, что RegEx использует это, я на работе, или я бы помог с этим. Я верю, что агент Рэнсак обладает способностью просто использовать отрицательный поиск, но мне придется проверить.

У агента Ransack есть "Specify Not Expression", которая будет работать для того, что вы хотите, но вам понадобится строка соответствия регулярного выражения, чтобы выполнить ее. Если вы разработчик, это хороший навык, по крайней мере, быть знакомым с псевдо-знакомством, достаточным для того, чтобы выполнить некоторые основные поиски или сопоставление текста.

[Редактировать] Агент Ransack не имеет возможности поиска "Не выражение". RegEx было довольно просто, хотя

(<\?xml version="1.0" encoding="utf-8"\?>)

Я буду продолжать искать инструмент / служебное приложение.

Я знаю, что это старый вопрос, но я пришел сюда в поисках той же информации и подумал, что поделюсь более простым решением с использованием Agent Ransack, которое фактически позволяет вам указать условие NOT. Для вышеупомянутого вопроса использование следующего в качестве текста для поиска отлично работает, и единственное необходимое изменение в рассматриваемой строке - экранирование двойных кавычек:

NOT "<?xml version=\"1.0\" encoding=\"utf-8\"?>"

Надеюсь, это поможет кому-то еще.

Другие вопросы по тегам