今天使用xml时发现一个问题:
xml会自动将空节点 变为<node/>
对于有文本内容的xml节点,如<node>a<node/>
可以使用如下代码修改其文本内容:
QDomNode oldnode = node.firstChild();
node.firstChild().setNodeValue(List.at(3));
QDomNode newnode = node.firstChild();
node.replaceChild(newnode,oldnode);
而对于<node/>或者
<node></node>这种,代码则没用,网上查了半天也没找到对应
的问题答案.
通过研究发现,代码要修改如下:
if(node.hasChildNodes())
{
QDomNode oldnode = node.firstChild();
node.firstChild().setNodeValue(List.at(4));
QDomNode newnode = node.firstChild();
node.replaceChild(newnode,oldnode);
}
else
{
QDomText text;
text = doc.createTextNode(List.at(4));
node.appendChild(text);
text.clear();
}
对于有文本的节点,其文本为该节点的第一个子节点,
但对于空节点,是没有文本节点的,所以使用第一种修改会失败.