2010-06-29 2 views
1

Какие библиотеки/инструменты доступны для уборки xml?Утилита/библиотека для уборки xml

Я нашел очень рекомендуемый HtmlTidy, но, к сожалению, он неправильно обрабатывает мои входные файлы xml - я имею в виду представить отчет об ошибке, но тем не менее мне нужен инструмент xml tidying, который работает с моим xml.

Может ли кто-нибудь предложить какие-либо альтернативы?

Обновление: Под "Tidy" Я имею в виду приукрашивать XML, так что (например):

<xml><testing attribute="somevalue"><etc /></testing></xml> 

Становится

<xml> 
    <testing attribute="somevalue"> 
    <etc /> 
    </testing> 
</xml> 

Исправлена ​​ошибка, я получаю с HTMLTidy

Когда я получаю возможность воспроизвести его с помощью некоторого xml, я могу представить в отчете об ошибке, который я намерен сделать просто что, однако, если вы заинтересованы ошибка, я получаю немного как это:

line 1 column 1 - Warning: missing <!DOCTYPE> declaration 
line 1 column 1 - Warning: plain text isn't allowed in <head> elements 
line 1 column 1 - Info: <head> previously mentioned 
line 1 column 1 - Warning: inserting implicit <body> 
line 1 column 6558 - Error: <myelement> is not recognized! 
line 1 column 6558 - Warning: discarding unexpected <myelement> 
** snip - around 15 similar errors/warnings ** 
48 warnings, 22 errors were found! Not all warnings/errors were shown. 

This document has errors that must be fixed before 
using HTML Tidy to generate a tidied up version. 

Ее стоит отметить, что мой XML является достаточно большим (~ 18k) и все отформатирован на одной линии, однако она полностью действует XML. Если я открою файл в Visual Studio и использую «prettifier», который имеет VS, HtmlTidy может правильно разобрать полученный xml.

+0

Определите «опрятный», пожалуйста. –

+1

Можете ли вы объяснить, что аккуратно не получается? Я нашел, что он отлично подходит для html, xhtml и xml. –

ответ

0

У вас есть xmllint? Его опция --format обеспечит хорошее отформатированное форматирование как выход.

0

Если вы можете использовать XSLT, у вас уже есть инструмент, который может это сделать.

Создайте таблицу стилей, содержащую identity transform, и используйте атрибут отступа xsl:output для отступов вывода. Bingo - tidy XML, по вашему определению.

Обратите внимание, что XML с добавленным пространством в принципе не эквивалентен оригиналу (есть случаи, когда пробелы важны для XML), но это, вероятно, не имеет для вас значения.

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