gpt4 book ai didi

c++ - xmlReadFile() (C++ Ubuntu) 核心转储损坏的 XML

转载 作者:行者123 更新时间:2023-11-28 07:57:04 24 4
gpt4 key购买 nike

我正在使用 libxml2 库来解析作为来自另一个程序的文件发送给我(我的程序)的 XML。小心这意味着我永远不会得到错误的 XML,但我已经两次手动调整破坏了接收到的文件中的 XML。损坏是指元素有错误、结束标签与开始标签不匹配、标签之间有随机字符等。

该文件很小,因此无需特别担心将其全部加载到解析器中的内存问题,因此我使用 xmlReadFile() 读取文档。

当 XML 损坏时,我的问题就来了。 xmlReadFile() 执行异常终止和核心转储。我无法异常捕获它,也无法将标志设置为“恢复”工作。

我看过 Google,但收效甚微。我找到了 xmllint,但我真的不想在每次获得新的 XML 文件时都调用 system() 或 popen()。我查看了 DTD,但似乎无法弄清楚如何告诉 DTD 实际验证在 . (文档中的许多标记的值是一组值,比如说,5 个可能的答案之一。)当然,如果 DTD 有效,我至少不会使 xmlReadFile() 崩溃。

关于如何在 xmlReadFile() 之前或使用 xmlReadFile() 验证 XML 以及如何防止崩溃有什么建议吗? xmllint 是否具有我尚未找到的 C++ 接口(interface)?

没有提升。无需更改库。

最佳答案

您是否尝试过 xmlReaderForFile(... XML_PARSE_RECOVER ...)

关于c++ - xmlReadFile() (C++ Ubuntu) 核心转储损坏的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12476626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com