DOMDocument:忽略重复的元素ID

时间:2009-01-06 09:30:17

标签: php domdocument tidy

我正在使用DOMDocument将一些页面内容(已通过Tidy运行,但不一定是因为这是问题的根源)进入DOMDocument::loadHTML

它出现了各种各样的错误:

  

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

有没有办法让DOMDocument(或Tidy)忽略或删除重复的元素ID,这样它实际上会创建DOMDocument

感谢。 :)

3 个答案:

答案 0 :(得分:11)

快速搜索主题会显示此错误报告:

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

最后一个回复说明如下:

  

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

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

HTML文档中的ID为generally unique,因此最佳解决方案仍会验证您的文档,如果可能的话。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用例外处理重复的ID,并重命名第二个ID。 或者,将相同父元素的子元素中的元素与ID组合。

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