xmlReadFile()(C++Ubuntu)核心转储损坏的XML
xmlReadFile() (C++ Ubuntu) core dumps on broken XML
我正在使用libxml2库来解析从另一个程序作为文件发送给我(我的程序)的XML。小心,这意味着我永远不会得到糟糕的XML,但我已经两次手动调整,破坏了收到的文件中的XML。我所说的breaked是指元素有错误、结束标签与开始标签不匹配、标签之间有随机字符等。
这个文件很小,所以不用担心将所有文件加载到解析器中,所以我使用xmlReadFile()读取文档。
当XML损坏时,我的问题就来了。xmlReadFile()执行异常终止和核心转储。我无法捕捉到异常,也无法将标志设置为"恢复"。
我对谷歌的评价是最低限度的。我找到了xmllint,但我真的不想每次得到新的XML文件时都调用system()或popen()。我看了DTD,但似乎不知道如何告诉DTD实际验证传入的值。(文档中的许多标签的值都是一组可能的答案中的一个。)当然,如果DTD有效,我至少不会破坏xmlReadFile()。
关于如何在xmlReadFile()之前或使用xmlReadFile)验证XML以及如何防止崩溃,有什么建议吗?xmllint有一个我还没有找到的C++接口吗?
没有助推。没有更改库。
您尝试过xmlReaderForFile(... XML_PARSE_RECOVER ...)
吗?
相关文章:
- 为什么会发生堆损坏
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- Cppcheck生成xml转储文件
- 平均图像时图像损坏
- 如何针对特定情况调试和修复此双自由内存损坏问题
- 如何在pugixml中获取节点的内部XML
- 如何使用tinyxml2从XML加载父实体和子实体
- boost xml parsingl将xml的路径作为变量发送
- 为什么C中的通用链表中存储的数据已损坏
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- gdb错误:Backtrace已停止:上一帧与此帧相同(堆栈已损坏?)
- 使用 Tinyxml 在 xml 中添加一个子子项
- 增强基于 XML class_id的反序列化
- C++双重释放或损坏(out)
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- 使用全局声明的向量时,C++双重释放错误/损坏
- 在 c++ 中使用 vtd-xml 时,如何摆脱 EOFException?
- 防止在C++中选择错误文件时提升 xml 解析器崩溃
- gcovr-在xml覆盖Cobertura报告中是否存在损坏文件名的已知问题
- xmlReadFile()(C++Ubuntu)核心转储损坏的XML