我需要解析 HTML 片段,我的意思是文件缺少 <html>、<head> 和 <body> 元素,否则具有格式良好的 XHTML 语法,保证 UTF8 编码。看起来 libxml 非常适合这项任务,但我有一些我不知道如何实现的限制。
- htmlSAXParseFile() 的工作做得很好,但它似乎自己创建了 DOM,在此过程中插入了body和html元素。我想自己创建 DOM,因为我可能需要跳过一些元素并即时修改其他元素。是否有可能以某种方式告诉 libxml根本不要创建 DOM,而只是解析 HTML 并调用我的处理程序?
- 如果这对于 libxml HTML 解析器来说是不可能的,那么我不妨使用似乎不会创建 DOM 的 xmlSAXUserParseFile()。但是,由于文件具有类似 <p>...</p><p>...</p> 的结构,因此解析器会过早地吐出“文档末尾的额外内容”。有没有办法抑制一些解析错误,同时仍然收到有关它们的通知(只是因为没有人保证这些文件中永远不会有其他错误)?
- libxml 中有一大堆解析函数,其中一些接受 xmlParserOption 作为参数。唉,xmlSAXUserParseFile() 没有。而那些似乎都因为一些不相关的 API 设计原因而创建了 DOM。我错过了一个明显的候选人吗?
哦,我承认我不愿意使用 libxml 的 DOM 看起来像是一个怪癖。我受到 RAM 的极大限制,因此我迫切需要对 DOM 进行完全控制,以便能够在内存不足的情况下删除一些节点并在必要时重新读取它们。
提前致谢。