最近我一直在使用xml编码,问题就发生了。
给出像这样的xml:
<Colonel id="1">
<Lieutenant_Colonel id="2">
<Secretary id="6"/>
</Lieutenant_Colonel>
<Lieutenant_Colonel id="3">
<Secretary id="7"/>
</Lieutenant_Colonel>
<Secretary id="5"/>
</Colonel>
现在上校(id = 1)已经和秘书一起去了(id = 5)
我们想要的xml就像
<!-- <Colonel id="1"> -->
<Lieutenant_Colonel id="2">
<Secretary id="6"/>
</Lieutenant_Colonel>
<Lieutenant_Colonel id="3">
<Secretary id="7"/>
</Lieutenant_Colonel>
<!--
<Secretary id="5"/>
</Colonel> -->
或
<Lieutenant_Colonel id="2">
<Secretary id="6"/>
</Lieutenant_Colonel>
<Lieutenant_Colonel id="3">
<Secretary id="7"/>
</Lieutenant_Colonel>
如何做这项工作?
请帮帮我
答案 0 :(得分:0)
这是一个很长的时间,所以我不得不提出其他问题。首先,考虑这个功能:
function RemoveColonel($id, $secretaryId)
{
$colXpath = '//colonel[@id="' . $id . '"]';
$secXpath = $colXpath . '/Secretary[@id="' . $secretaryId . '"]';
RemoveNode($secXpath);
$colChildren = $rootXml->xpath($colXpath)->children();
$children = array();
foreach ($colChildren as $child ){
$children[] = $child;
}
RemoveNode($colXpath);
return $children;
}
考虑到上校的身份和上校的秘书,它删除了秘书,然后它拯救了上校的孩子去除上校并让孩子们归还。之后,如果您愿意,可以再次在根节点中插入元素。如果您在删除上校时无法拥有秘书ID,则可以通过删除id规范来解决xpath以删除作为上校子女的秘书。
RemoveNode代码有点长,所以我必须向你提问如何在PHP中使用SimpleXML删除节点的问题。
我希望我能得到一些帮助!