Быстрый способ проверить XML / определить точку отказа - PullRequest
21 голосов
/ 17 июля 2009

У меня есть XML-файл большого размера (90 МБ) из Excel, сохраненный в формате XML Spreadsheet 2003. Он содержит различные недопустимые данные, так что Firefox выдает такие сообщения:

Line Number 790402, Column 65:
<Cell ss:StyleID="s18"><Data ss:Type="String">Here's some data I&#5;?Bnternational</Data></Cell>

Есть ли инструмент, который будет анализировать мой XML и сообщать мне, что с ним не так, подобно Firefox? Firefox довольно медленно разбирает его (по-видимому, потому что он хранит все это в памяти, готовый для рендеринга в красивое дерево навигации) Меня не беспокоит проверка XSD, просто хочу знать, правильно ли сформирован XML.

Ответы [ 6 ]

41 голосов
/ 17 июля 2009

Для этого есть команда linux xmllint . Это очень быстро, обрабатывает отличные файлы без помех и дает полезные сообщения об ошибках проверки.

11 голосов
/ 24 июня 2014

Другой ответ упрощен:

python -c "import sys, xml.dom.minidom as d; d.parse(sys.argv[1])" FILE
3 голосов
/ 17 июля 2009

Для этого вы можете использовать функции других языков. Например, двухслойный в Python:

import xml.dom.minidom as dom
dom.parse ('test.xml')

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

Приветствия

Редактировать: В ответе на этот вопрос предлагается использовать SAX поверх dom, поскольку он будет более производительным. Готовый скрипт Python будет выглядеть примерно так:

#!/usr/bin/env python
import xml.sax as sax
parser = sax.make_parser ()
parser.parse (open ('test.xml'))

Редактировать 2: Я снова помню, инструмент был XMLStarlet . Я нашел это довольно хорошим, когда использовал его два года назад.

2 голосов
/ 17 июля 2009

Я всегда рекомендую утилиты командной строки XML Starlet .

Они обеспечивают проверку, запросы, форматирование, редактирование документов прямо из командной строки, и они неоценимы для такой работы или для проверки работоспособности документов, вырезания разделов через XPath и т. Д.

1 голос
/ 16 мая 2019

Онлайн-инструмент CodVerter предлагает:

XML Validator
XML в XSD

Проверка данных XML, экспортированных из Microsoft Excel: enter image description here

0 голосов
/ 14 июня 2019

Существует еще один инструмент командной строки new-ish (с 2013 года), основанный на синтаксическом анализаторе Xerces для выполнения проверки XML-схемы. Он называется xjparse (https://xjparse.org).. До сих пор я обнаружил, что этот инструмент медленный, но является одним из наиболее полных валидаторов схемы, особенно если у вас есть xsd, которые включают / импортируют другие xsd. Похоже, он доступен на большинстве популярных дистрибутивов Linux.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...