修正Doxygen XML输出中的错误

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?

1个回答

2
一种可能的解决方式是在出现错误时绕过它们并手动修复,通过迭代XML文件直到其格式正确。参考这个Stackoverflow问题:Ignoring a Invalid XML-Tag using Qdom? 你也可以在处理前使用tidy库来修复输入内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接