Как очистить файл XML для синтаксического анализа Java, заключив атрибуты в кавычки

У меня есть ряд файлов xml, которые выглядят примерно так:

<ROOT>
    <F P=100> Some text here </F>
    <F P=101> More text </F>
    ...
</ROOT>

Я пытаюсь проанализировать xml, используя стандартный способ DOM, но поскольку значения атрибута для P не заключены в кавычки, Java жалуется.

Я попытался использовать JTidy, чтобы очистить его, но поскольку мой xml не является HTML, Tidy выдает ошибки, жалуясь на то, что не распознает теги <ROOT> и <F> и т. д.

Итак, есть ли другой способ сделать это? В качестве альтернативы, я думаю, я мог бы использовать регулярное выражение, поскольку единственные атрибуты без кавычек встречаются в тегах <F>. Любые мысли о том или ином?

заранее спасибо


person neptune    schedule 13.05.2011    source источник
comment
Был аналогичный вопрос несколько дней назад. В вашем случае, возможно, легко справиться с регулярным выражением, если у вас мало тегов и атрибутов для работы. В противном случае, я думаю, что реальным решением будет вернуться к поставщику этих файлов и попросить его создать корректный XML.   -  person MarcoS    schedule 13.05.2011
comment
Нвм, исправил. Все, что мне нужно было сделать, это установить tidy.setXmlTags(true), чтобы tidy обрабатывал ввод как XML, а не HTML.   -  person neptune    schedule 13.05.2011
comment
Пожалуйста, не называйте их файлами XML, если это не так, это очень запутывает. Назовите их файлами, отличными от XML, и тогда мы все поймем, о чем вы говорите. Это также дает понять, что вам нужны инструменты, отличные от XML, для их обработки.   -  person Michael Kay    schedule 13.05.2011


Ответы (1)


Все, что мне нужно было сделать, это установить tidy.setXmlTags(true), чтобы tidy обрабатывал ввод как XML, а не HTML.

- Шелдон

person Qtax    schedule 13.05.2011
comment
Я знаю, что это приходит очень поздно. Но у вас случайно нет куска аккуратного кода, который вы используете для очистки XML. У меня очень похожая проблема, у меня не работает jtidy. Огромное спасибо - person Harry; 22.10.2012
comment
@Harish, это прямая цитата из комментариев к вопросу выше. Можете попробовать спросить у плаката там. - person Qtax; 24.10.2012