我有一个XML文档,其中一部分包含以下内容:

<math display='block'><mtext>&#x2009;</mtext></math>

如果将其加载到Qt中(特别是在我发现此问题的Qt MathML小部件中),则QDomDocument对象将丢失Unicode稀疏字符(U + 2009)。此Python示例代码演示了该问题:
from PyQt4.QtXml import *

d = QDomDocument()
d.setContent("<math display='block'><mtext>&#x2009;</mtext></math>")
print repr(unicode(d.toString()))

此代码的输出是:
u'<math display="block">\n <mtext/>\n</math>\n'

在精简空间之后插入一个额外的非空格字符可停止精简空间的丢失。

这是我的错误,是XML功能,还是Qt有错误?

最佳答案

QDomDocument's documentation:



这样,您就不会丢失仅空白数据(示例在C++中):

QXmlSimpleReader reader;
QXmlInputSource source;
QDomDocument dom;

source.setData(QString("<mtext>&#x2009;</mtext>"));
dom.setContent(&source, &reader);

关于xml - 为什么Qt在加载XML文件时会丢失我的瘦空间unicode字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10968940/

10-10 09:52