今天使用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();
}
對於有文本的節點,其文本爲該節點的第一個子節點,
但對於空節點,是沒有文本節點的,所以使用第一種修改會失敗.