我使用以下代码来解析XML文件。我的目的是检测<Name>
元素是否为“ABC”,我将删除其<Malfunction>
内容。但是,我的代码只允许我在“名称”中阅读,并使用<Name>
删除所有元素标记。
是否可以检查<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);
}
答案 0 :(得分:0)
最终这将有效。 检查ABC:
node.nodeValue().contains("ABC");
删除完整
QDomnode toRemove = node.parentNode();
toRemove.parentNode().removeChild(toRemove);