2012-04-09 2 views
1

У меня есть XML-файл, который я хочу отформатировать XML-файл для удаления тегов типа «<scientific_max></scientific_max>». Я использовал этот код, но он не работаетИспользование регулярного выражения для удаления ненужных тегов XML

String regex = "<([a-z_]+)></($1)>"; 
result = result.replaceAll(regex, ""); 

Иметь хороший день!

+8

Как всегда с XML и HTML, не используйте regexp для этого. Для XML используйте любую доступную там библиотеку XML. Даже SAXParser может выполнить эту работу. Regexp не подходят для этого! –

+0

Правильно, библиотеки обеспечивают лучшую поддержку. Например, JAXB предоставит вам простой объект со всеми свойствами XML, определенными на данном узле. – Dan

+0

На самом деле, я хочу использовать регулярное выражение, потому что процесс не слишком длинный, и у меня не так много итераций. Более того, использование другой третьей библиотеки может сделать процесс solwer, который не является хорошим. –

ответ

1

Если вы настаиваете на выполнении таких задач, с регулярными выражениями вы хотели бы знать, что back references представлены как \n в Java вместо $n:

String regex = "<([a-z_]+)></\\1>"; 
result = result.replaceAll(regex, ""); 
+0

Я боюсь сказать, что это регулярное выражение не возвращает ожидаемый результат. Фактически, это не соответствовало моей строке Java. –

+1

@bouhmid_tun Прекрасно работает со мной. Какая была ваша строка? Может быть, некоторые пробелы или разрыв строки между тегами? Вот почему Гийом и другие отметили, что регулярные выражения могут не очень хорошо разбираться в XML. – Howard

+0

Мой файл XML содержит символы, как это: колонка PS: Я не могу вставить все файла не хватает места, но эти данные могут дать Вам IDEO к тому, как мой файл выглядит , –

1

Java не является лучшим, когда дело доходит до сопоставления с образцом & замена строк в файлах , если вы рассматриваете это для извлечения данных на основе тегов, с помощью JAXB

, если вы хотите, чтобы сделать постоянное изменение в XML, вы можете использовать СЭД

sed -i 's/< \ * scientific_max> * $ //' input_xml.xml

Смежные вопросы