如何忽略 XML 或 HTML 中未关闭的标签?

How to ignore unclosed tags in XML or HTML?

我正在 Haskell 中使用包 Text.XML 和 Text.XML.Cursor.

为站点编写解析器

有未关闭的标签并报错:

Main.hs: Error parsing XML file dat.html: 29:1-29:8: Expected end element for: Name {nameLocalName = "br", nameNamespace = Nothing, namePrefix = Nothing}, but received: EventEndElement (Name {nameLocalName = "body", nameNamespace = Nothing, namePrefix = Nothing})

怎么办?如何忽略此类标签?

带有未闭合标签的文本对象不是 well-formed,因此 不是 XML。

因此,忘记使用任何 XML 库、解析器或工具。根据定义和设计,它们无法帮助您。

你有两个选择。或者,

  1. 将未关闭的文本对象修复为well-formed 标签。您可以手动执行此操作或尝试使用 TIDY
  2. 定义一种允许未闭合标签的新数据格式,并写一个 从头开始解析它。