4

我目前正在为 doxygen XML 输出编写解析器。部分是因为学术原因和 doxygen/addons/doxmlparser 的代码是古老的。

我正在使用 QXmlStreamReader 解析 XML,它会在某些属性中引发错误。例如以下 XML 是由 doxygen 生成的:

...
<listofallmembers>
...
<member refid="qset_1operator&" prot="public" virt="non-virtual"><scope>libDatabase::Set</scope><name>operator&amp;</name></member>
...
</listofallmembers>

refid="qset_1operator&"当然是个问题:

XmlStreamReaderError: Expected '#' or '[a-zA-Z]', but got '"'.

其他错误包括<>在 XML 属性中包含字符(和其他)。

我知道这些字符必须被它们的&lt;,&gt;等对应物替换。

当我不能使用 Qt 的类甚至查看 XML 时,我将如何轻松(当然是自动)更正 XML?

4

1 回答 1

2

一种可能性是解决错误并在它们出现时手动修复它们,迭代 XML 直到其格式正确。请参阅这个 Stackoverflow 问题: Ignoring a Invalid XML-Tag using Qdom?

您还可以使用tidy 库在处理之前修复输入。

于 2013-02-25T10:52:51.407 回答