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

1322
Richie086

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

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

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

2
Какую операционную систему вы используете каким-либо образом? Angel Brighteyes 12 лет назад 1

2 ответа на вопрос

5
B.Rossow

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

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

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

1
Angel Brighteyes

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

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

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

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

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