我已經使用下面的代碼來解析XML文件。我的目標是檢測<Name>
元素是否爲「ABC」,並且我將刪除其<Malfunction>
內容。但是,我的代碼只允許我在「名稱」中讀取,並使用<Name>
刪除所有元素標記。QDom刪除元素
是否可以檢查<Name>
元素標記是否包含「ABC」並刪除<Malfunction></Malfunction>
標記內的內容,包括標記本身?
任何幫助表示讚賞。 謝謝。
的.cpp:
QDomNodeList nodes = doc.elementsByTagName("Name");
while(!nodes.isEmpty())
{
QDomNode node = nodes.at(0);
node.parentNode().removeChild(node);
}
.XML:
<InjectedMalfunctions>
<Malfunction>
<Segment>ABC</Segment>
<Name>ABC failure</Name>
<Time>00:00:00</Time>
</Malfunction>
<Malfunction>
<Segment>DEF</Segment>
<Name>DEF failure</Name>
<Time>00:00:00</Time>
</Malfunction>
</InjectedMalfunctions>
輸出的.xml:
<InjectedMalfunctions>
<Malfunction>
<Segment>ABC</Segment>
<Time>00:00:00</Time>
</Malfunction>
<Malfunction>
<Segment>DEF</Segment>
<Time>00:00:00</Time>
</Malfunction>
</InjectedMalfunctions>
求購.XML:
<InjectedMalfunctions>
<Malfunction>
<Segment>DEF</Segment>
<Name>DEF failure</Name>
<Time>00:00:00</Time>
</Malfunction>
</InjectedMalfunctions>
以下代碼將刪除所有<Malfunction>
標記,而不僅僅是第一個<Malfunction>
組。
編輯的.cpp:
QDomNodeList nodes = doc.elementsByTagName("Name");
while(!nodes.isEmpty())
{
QDomNode node = nodes.at(0);
node.nodeValue().contains("ABC");
QDomNode toRemove = node.parentNode();
toRemove.parentNode().removeChild(toRemove);
}
有沒有人誰可以在此建議?非常感激。謝謝。 – Wallace