我从Excel获得了一个大型(90MB)XML文件,以XML Spreadsheet 2003格式保存。它包含各种无效数据,因此Firefox会发出如下消息:
Line Number 790402, Column 65:
<Cell ss:StyleID="s18"><Data ss:Type="String">Here's some data I?Bnternational</Data></Cell>
是否有一种工具可以解析我的XML并以类似于Firefox的方式告诉我它有什么问题? Firefox解析它的速度很慢(可能是因为它将所有内容保存在内存中,可以渲染成一个漂亮的可导航树)。我并不打算对XSD进行验证,只是想知道XML是否格式正确。
答案 0 :(得分:41)
有一个名为xmllint的linux命令对此有好处。它速度非常快,可以在没有barfing的情况下处理好文件,并提供有用的验证错误消息。
答案 1 :(得分:11)
简化了另一个答案:
python -c "import sys, xml.dom.minidom as d; d.parse(sys.argv[1])" FILE
答案 2 :(得分:3)
您可以使用其他语言的功能。例如,Python中的双线程:
import xml.dom.minidom as dom
dom.parse ('test.xml')
这将显示问题,并且非常高效。我记得有一个XML工具包在bash中运行得很好,但我现在找不到链接。
干杯,
修改: This question's answer建议使用SAX over dom,因为它性能更高。随时可以使用的Python脚本如下所示:
#!/usr/bin/env python
import xml.sax as sax
parser = sax.make_parser ()
parser.parse (open ('test.xml'))
编辑2:我再次记住,该工具是XMLStarlet。当我两年前使用它时,我发现它非常好。
答案 3 :(得分:2)
我总是推荐XML Starlet命令行实用程序。
它们直接从命令行提供验证,查询,格式化,文档编辑,它们对于这类工作非常有价值,或者它们可以通过XPath等方式删除部分。
答案 4 :(得分:1)
答案 5 :(得分:0)
还有另一个新的(自2013年以来)命令行工具,该工具基于Xerces解析器进行XML Schema验证。它称为xjparse(https://xjparse.org)。到目前为止,我发现该工具运行缓慢,但是是较完整的模式验证器之一,尤其是当您碰巧具有包含/导入其他xsd的xsd时。它似乎也可以在大多数流行的Linux发行版中找到。