8

我正在DOMDocument使用DOMDocument::loadHTML.

它出现了各种错误:

ID x 已在实体第 X 行中定义

有没有办法让DOMDocument(或整洁)忽略或去除重复的元素 ID,所以它实际上会创建DOMDocument?

谢谢。:)

4

3 回答 3

13

快速搜索该主题会发现这个(不正确的)错误报告:

http://bugs.php.net/bug.php?id=46136

最后一个回复说如下:

您正在使用 HTML 4 规则来加载 XHTML 文档。使用 load() 方法解析为 XML 或 libxml_use_internal_errors() 函数忽略警告。

我无法确定您是否出于同样的原因遇到此问题,因为您没有包含对正在加载的 HTML 页面的引用。无论如何,使用libxml_use_internal_errors()至少应该抑制错误。

HTML 文档中的 ID通常是唯一的,因此最好的解决方案仍然是验证您的文档,如果可能的话。

于 2009-01-06T09:40:25.213 回答
0

根据定义,ID 是唯一的。如果不是,您应该使用类来代替(也不是名称,它适用的地方)。
我怀疑您是否可以强制 XML 工具忽略重复的 ID,这将使它们处理无效的 XML 文档。

于 2009-01-06T09:40:37.350 回答
0

使用 Exceptions 处理重复的 ID,并重命名第二个 id。或者,将同一父级的子元素中的元素与 ID 组合起来。

ID 在 XML 文件中是唯一的(在 XMLTree 的 rootElement 中)

于 2009-01-06T10:49:42.267 回答