gpt4 book ai didi

xml - Qt XML 序列化/反序列化到 Q_PROPERTY

转载 作者:数据小太阳 更新时间:2023-10-29 02:36:31 24 4
gpt4 key购买 nike

QJson ( http://qjson.sourceforge.net ) 实现了一个非常方便的 API,用于序列化和反序列化 Q_OBJECTS - 通过将它们的 Q_PROPERTIES 转换为 qVariant,它允许对任意模型实例进行方便的序列化和反序列化。

XML 是否有类似的东西? QDom* 和 QXml* 系列都相当有限。

最佳答案

据我所知,没有任何第 3 方库可以做到这一点。您有两个选择:

一个。为每个对象手动编码序列化/反序列化。这很容易。要序列化,请执行以下操作:

QDomElement Asset::ToXMLNode(QDomDocument& doc)
{
QDomElement elem = doc.createElement("Asset");
elem.setAttribute("Image", ImageName);
elem.setAttribute("Name", Description);
elem.setAttribute("ID", ID);
elem.setAttribute("TargetClass", ClassType);
elem.setAttribute("Type", TypeToString());
QDomElement physEl = doc.createElement("Physics");
for(int i=0;i<BodyShapes.count();i++)
{
physEl.appendChild(BodyShapes[i]->ToXMLNode(doc));
}
elem.appendChild(physEl);
return elem;
}

反序列化:

void Asset::Load(const QDomElement& node)
{
ImageName = node.attribute("Image");
Bitmap.load(GetResourceFolder() + QDir::separator() + ImageName);
Description = node.attribute("Name");
ID = node.attribute("ID");
ClassType = node.attribute("TargetClass");
QDomNodeList shapes = node.firstChildElement("Physics").childNodes();
for(int i=0;i<shapes.count();i++)
{
BodyShape* s = BodyShape::Load(shapes.item(i).toElement());
BodyShapes << s;
}
IsLoaded = true;
}

克隆 QJSON 并重写发出 JSON 字符串的部分以发出 XML 字符串,反之亦然。应该是工作一天左右。

关于xml - Qt XML 序列化/反序列化到 Q_PROPERTY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12647092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com