无法在XML中找到未关闭的元素

itz*_*tzy 9 xml

我有一个大的XML文件(~18MB).显然,其中有一个标签没有关闭.我知道这是因为当我运行W3C标记验证工具(validator.w3.org)时,我收到以下错误:

You may have neglected to close an element, or perhaps you meant to "self-close" an element, that is, ending it with "/>" instead of ">".

我的问题是如何在文件中的500,000行中找到这个缺失的封闭元素.是否有一个我可以使用的工具可以建议可能存在问题的地方 - 比如在一定数量的线后没有关闭的元素?

任何想法将不胜感激.

Bal*_*a R 8

我使用Notepad ++,它有一个优秀的XML Tools插件,可以让你检查XML语法并带你到有问题的界限.它还有有用的实用程序.

在此输入图像描述

  • 不幸的是,这只是告诉我文件最后一行的结尾过早。我猜这类似于w3验证程序所做的事情。 (2认同)

Jon*_*Jon 5

我刚刚在 VS 2010(使用 ReSharper)中打开了一个 XML 文件,破坏了 XML,你知道什么?该错误立即突出显示。如果您可以访问相同的内容,那就这么简单。


the*_*Man 5

xmllint是一个标准工具。从验证和 DTD页面:

最简单的方法是使用 libxml 附带的 xmllint 程序。--valid 选项打开作为输入给出的文件的验证。例如,以下内容验证 XML 1.0 规范第一修订版的副本:

xmllint --valid --noout test/valid/REC-xml-19980210.xml
Run Code Online (Sandbox Code Playgroud)

--noout 用于禁用结果树的输出。

--dtdvalid dtd 允许根据给定的 DTD 验证文档。

Libxml2 导出一个 API 来处理 DTD 和验证,请检查相关描述。

如果您的文档打印得不够“漂亮”,那么仍然很难找到有问题的节点,因此您可能需要使用 xmllint 重写要缩进的文件。