4 Xmlutil::Xmlutil(QObject *parent) :
\r
9 QDomElement Xmlutil::addElement(QDomDocument &doc, QDomNode &node,
\r
10 const QString &tag, const QString &value)
\r
12 QDomElement element = doc.createElement(tag);
\r
13 node.appendChild(element);
\r
16 QDomText text = doc.createTextNode(value);
\r
17 element.appendChild(text);
\r
23 // Unit test from main
\r
25 Steps step("+4670", 1);
\r
31 p.mSteps.append(step);
\r
33 step.setValue("+4788");
\r
34 p.mSteps.append(step);
\r
36 qDebug() << p.generateProfileXML(p, error);
\r
39 QString Xmlutil::generateProfileXML(const Profile &profile, int *error,
\r
40 QDomDocument *doc, QDomElement *elem)
\r
42 QDomDocument *pDoc = NULL;
\r
44 pDoc = new QDomDocument;
\r
48 QDomElement domElement;
\r
51 domElement = Xmlutil::addElement(*pDoc, *pDoc, PROFILE_ELEM_TAG);
\r
53 domElement = Xmlutil::addElement(*pDoc, *elem, PROFILE_ELEM_TAG);
\r
55 domElement.setAttribute(NAME_ATTR, profile.mName);
\r
56 domElement.setAttribute(NO_OF_STEPS_ATTR, profile.mNoOfSteps);
\r
58 if(profile.mNoOfSteps > 0)
\r
60 for(unsigned int i = 0; i < profile.mNoOfSteps; i++)
\r
62 QDomElement stepEl = Xmlutil::addElement(*pDoc, domElement, STEP_TAG);
\r
63 Steps step = profile.mSteps.at(i);
\r
64 stepEl.setAttribute(VALUE_ATTR, step.value());
\r
65 stepEl.setAttribute(DELAY_ATTR, step.delay());
\r
69 QString xmlString = pDoc->toString();
\r
78 QString generateXML()
\r
80 Steps step("+4670", 1);
\r
84 p.mSteps.append(step);
\r
86 step.setValue("+4788");
\r
87 p.mSteps.append(step);
\r
89 return xmlutil::generateProfileXML(p);
\r
92 // Unit test from main...
\r
94 QString xmlString = generateXML();
\r
97 int e = xmlutil::degenerateProfileXML(xmlString, p);
\r
100 int Xmlutil::degenerateProfileXML(const QString xmlString, Profile &profile,
\r
101 QDomElement *pElem)
\r
105 QDomElement *elem = NULL;
\r
106 if(0 == pElem && !xmlString.isNull())
\r
108 doc.setContent(xmlString);
\r
109 *elem = doc.namedItem(PROFILE_ELEM_TAG).toElement();
\r
119 profile.mName = elem->attribute(NAME_ATTR);
\r
120 profile.mNoOfSteps = elem->attribute(NO_OF_STEPS_ATTR).toInt();
\r
122 qDebug() << profile.mName << ":" << profile.mNoOfSteps;
\r
123 QDomElement child = elem->firstChild().toElement();
\r
125 profile.mSteps.clear();
\r
127 for(unsigned int i = 0; i < profile.mNoOfSteps ; i++)
\r
129 step.setDelay(child.attribute(DELAY_ATTR).toInt());
\r
130 step.setValue(child.attribute(VALUE_ATTR));
\r
131 profile.mSteps.append(step);
\r
132 qDebug() << step.value() << ":" << step.delay();
\r
133 child = child.nextSiblingElement();
\r