【发布时间】:2018-04-12 23:09:49
【问题描述】:
我正在创建一个小部件,它将以非常格式化的方式显示 XML 字符串。为此,我使用QXmlStreamReader 和QXmlStreamWriter(基于Format XML file in c++ or Qt 的回答)并将文本提供给QTextBrowser:
message = "<person><name>John</name><surname>Smith</surname><hobbies><sport>football</sport><sport>tenis</sport><activity>dancing</activity></hobbies></person>"
byteArray = QByteArray()
xmlReader = QXmlStreamReader(message)
xmlWriter = QXmlStreamWriter(byteArray)
xmlWriter.setAutoFormatting(True)
while (not xmlReader.atEnd()):
xmlReader.readNext();
if (not xmlReader.isWhitespace()):
xmlWriter.writeCurrentToken(xmlReader)
prettyMessage = str(byteArray.data())
textBrowser.setText(prettyMessage)
但生成的文本不会将 \n 转换为新行:
如果我手动输入带有\n 的字符串,它们将被转换为新行:
textBrowser.setText("1\n2\n3\n4")
我检查了byteArray 的确切内容,以确保\n 作为一个字符而不是作为两个单独的“\”和“n”字符传递:
for i in range(0, byteArray.size()):
sys.stdout.write(byteArray.at(i))
按预期打印出 XML 字符串:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>John</name>
<surname>Smith</surname>
<hobbies>
<sport>football</sport>
<sport>tenis</sport>
<activity>dancing</activity>
</hobbies>
</person>
我正在使用 python 3.6 和 PyQt5
【问题讨论】:
标签: python xml pyqt pyqt5 qbytearray