加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么Qt在加载XML文件时会丢失我的精简空间unicode字符?

发布时间:2020-12-16 22:55:38 所属栏目:百科 来源:网络整理
导读:我有一个 XML文档,其中一部分包含以下内容: math display='block'mtext#x2009;/mtext/math 如果将其加载到Qt(特别是我发现此问题的Qt MathML小部件),则QDomDocument对象将丢失unicode精简空格字符(U 2009).这个Python示例代码演示了这个问题: from PyQt4.Q
我有一个 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开始:

Text nodes consisting only of whitespace are stripped and won’t appear
in the QDomDocument. If this behavior is not desired,one can use the
setContent() overload that allows a QXmlReader to be supplied.

所以这样你就不会丢失只有空格的数据(例如C中):

QXmlSimpleReader reader;
QXmlInputSource source;
QDomDocument dom;

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读