Утилита / библиотека для уборки xml - PullRequest
2 голосов
/ 29 июня 2010

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

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

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

Обновить: Под "Tidy" я подразумеваю prettify 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 достаточно большой (~ 18 КБ) и все отформатированы в одну строку, однако это полностью допустимый xml.Если я открою файл в Visual Studio и использую «prettifier», который есть у VS, HtmlTidy сможет правильно проанализировать полученный xml.

Ответы [ 2 ]

0 голосов
/ 05 июля 2010

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

Создайте таблицу стилей, содержащую идентификационное преобразование , и используйте атрибут отступа xsl:outputсделать отступ в выводе.Бинго-аккуратный XML, по вашему определению.

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

0 голосов
/ 05 июля 2010

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

...