一、格式化(美化)
通过QXmlFormatter进行格式化
// 传入xml文件路径
QString MainDialog::formatText(const QString &path)
{
if (path.isEmpty())
return "";
QXmlQuery query;
query.setQuery(QString("doc('%1')").arg(path));
QByteArray outArray;
QBuffer buffer(&outArray);
if (!buffer.open(QIODevice::ReadWrite))
{
showTips("警告", "文件打开失败");
}
QXmlFormatter formatter(query, &buffer);
formatter.setIndentationDepth(3);
query.evaluateTo(&formatter);
buffer.close();
return QString::fromUtf8(outArray.constData());
}
二、反格式化(压缩)
采用正则匹配,删除xml标签中间的空白符、换行等,变成一行,从而减少xml文件大小
// 传入xml文件的内容文本
QString MainDialog::unFormatText(const QString &text)
{
if (text.isEmpty())
return "";
QString retText = text;
QRegExp re(">[\\s\r\n]*<");
retText.replace(re, "><");
return retText;
}