Вот XML исходный:
CODE
<SEPARATOR PORT="3333" IP="192.168.34.21" NAME="separator" COLOR="1234567" >
<PROPERTIES>
</PROPERTIES>
</SEPARATOR>
Таким ожидается получить его получить после добавления дочерних узлов в <PROPERTIES>:
CODE
<SEPARATOR PORT="3333" IP="192.168.34.21" NAME="separator" COLOR="1234567" >
<PROPERTIES>
<PROPERTY CODE="TEST_PROP1" >
<VALUE>AAA</VALUE>
</PROPERTY>
<PROPERTY CODE="TEST_PROP2" >
<VALUE>AAA</VALUE>
<VALUE>AAA</VALUE>
</PROPERTY>
<PROPERTY CODE="TEST_PROP3" >
<VALUE>AAA</VALUE>
<VALUE>AAA</VALUE>
<VALUE>AAA</VALUE>
</PROPERTY>
</PROPERTIES>
</SEPARATOR>
<PROPERTIES>
<PROPERTY CODE="TEST_PROP1" >
<VALUE>AAA</VALUE>
</PROPERTY>
<PROPERTY CODE="TEST_PROP2" >
<VALUE>AAA</VALUE>
<VALUE>AAA</VALUE>
</PROPERTY>
<PROPERTY CODE="TEST_PROP3" >
<VALUE>AAA</VALUE>
<VALUE>AAA</VALUE>
<VALUE>AAA</VALUE>
</PROPERTY>
</PROPERTIES>
</SEPARATOR>
А таким он получается:
CODE
<SEPARATOR PORT="3333" IP="192.168.34.21" NAME="separator" COLOR="1234567" >
<PROPERTIES>
<PROPERTY CODE="TEST_PROP1" >
<VALUE/>
</PROPERTY>
<PROPERTY CODE="TEST_PROP2" >
<VALUE/>
<VALUE/>
</PROPERTY>
<PROPERTY CODE="TEST_PROP3" >
<VALUE/>
<VALUE/>
<VALUE/>
</PROPERTY>
</PROPERTIES>
</SEPARATOR>
<PROPERTIES>
<PROPERTY CODE="TEST_PROP1" >
<VALUE/>
</PROPERTY>
<PROPERTY CODE="TEST_PROP2" >
<VALUE/>
<VALUE/>
</PROPERTY>
<PROPERTY CODE="TEST_PROP3" >
<VALUE/>
<VALUE/>
<VALUE/>
</PROPERTY>
</PROPERTIES>
</SEPARATOR>
Код добавления узлов:
CODE
CPropertyNode* CSeparatorNode::CreateNewProperty(QString CODE, int ValueCount)
{
QDomElement PropertiesNode = GetNode().firstChildElement("PROPERTIES");
QDomElement NewProperty = GetNode().ownerDocument().createElement("PROPERTY");
PropertiesNode.appendChild(NewProperty);
NewProperty.setAttribute("CODE", CODE);
if (ValueCount > 0)
{
for(int i=0; i<ValueCount; i++)
{
QDomElement ValueNode = GetNode().ownerDocument().createElement("VALUE");
NewProperty.appendChild(ValueNode);
ValueNode.setNodeValue("AAA");
QString S = "Значение свойства установилось в " + ValueNode.nodeValue();
qDebug(S.toAscii());//Здесь всё в порядке, выдаёт "AAA"
}
}
CPropertyNode* Property = new CPropertyNode(this, ValueCount);
Property->ProcessByNode(NewProperty);
Properties.append(Property);
return Property;
}
{
QDomElement PropertiesNode = GetNode().firstChildElement("PROPERTIES");
QDomElement NewProperty = GetNode().ownerDocument().createElement("PROPERTY");
PropertiesNode.appendChild(NewProperty);
NewProperty.setAttribute("CODE", CODE);
if (ValueCount > 0)
{
for(int i=0; i<ValueCount; i++)
{
QDomElement ValueNode = GetNode().ownerDocument().createElement("VALUE");
NewProperty.appendChild(ValueNode);
ValueNode.setNodeValue("AAA");
QString S = "Значение свойства установилось в " + ValueNode.nodeValue();
qDebug(S.toAscii());//Здесь всё в порядке, выдаёт "AAA"
}
}
CPropertyNode* Property = new CPropertyNode(this, ValueCount);
Property->ProcessByNode(NewProperty);
Properties.append(Property);
return Property;
}
Код работает отлично. Узлы создаются. В консоли видно, что установилось желаемое значение узла <VALUE>. Однако после сохранения значения узлов <VALUE> пустые!
Кто-нибудь сталкивался с такой проблемой?