有没有办法使 XmlDocument 解析不那么严格

本文关键字:XmlDocument 有没有 | 更新日期: 2023-09-27 18:31:19

我正在制作一个程序,将其数据存储在XML文件中。当人们编写 XML 时,他们可能会犯一些细微的错误,例如以 - 结尾注释,使其看起来像<!-- comment --->或在属性中添加</>。当然,XML 仍然可以正常读取,但尝试将此文本输入到 XmlDocument 中会给出语法错误(并且不会被解析)。

有没有办法使 XmlDocument 不那么严格,并使其忽略不使文档无法解析的标准违规行为?例如,很明显,即使<!-- comment --->末尾包含违反标准规范的-,它仍然是一个注释)。

有没有办法使 XmlDocument 解析不那么严格

> 不,这是一件好事。

XML是一种严格的格式,这里的解决方案是具有正确(更正)的输入。

根据设计,所有 XML 工具都非常挑剔。您可能对XMLReeader和修复或拒绝错误的元素有一些运气。

但是,使用合适的工具创建XML要好得多。其中相当多的被命名为XmlPad

不,XML 解析器应拒绝无效 XML 的输入。

您可以尝试通过Tidy预处理无效文件,但最好只是确保输入有效。

下面是一个用法示例。Tidy 会修复您的评论并做一些转义,但额外的开场<会更频繁地破坏事情——在这种情况下猜测简直太多了。>

Tidy tidy = new Tidy();
tidy.Options.FixComments = true;
tidy.Options.XmlTags = true;
tidy.Options.XmlOut = true;
string invalid = "<root>< <!--comment--->></root>";
MemoryStream input = new MemoryStream(Encoding.UTF8.GetBytes(invalid));
MemoryStream output = new MemoryStream();
tidy.Parse(input, output, new TidyMessageCollection());
// TODO check the messages
string repaired = Encoding.UTF8.GetString(output.ToArray());