У меня есть XML, как показано ниже
<Row><Cell ss:StyleID="s245"><Data ss:Type="String">ABSOLUTE</Data></Cell>
<Cell ><Data ss:Type="String">Yellow</Data></Cell>
<Cell ><Data ss:Type="String">Exist</Data></Cell>
<Cell ><Data ss:Type="Number">30</Data></Cell>
<Cell ss:StyleID="s258"/>
</Row>
<Row><Cell ss:StyleID="s229"><Data ss:Type="String">PART3</Data></Cell>
<Cell ><Data ss:Type="String">Part3 Description</Data></Cell>
<Cell ><Data ss:Type="String">Buy_Part</Data></Cell>
<Cell ><Data ss:Type="Number">0</Data></Cell>
<Cell ss:StyleID="s258"/>
</Row>
<Row ss:AutoFitHeight="0" ss:Height="13.5"><Cell ss:StyleID="s245"><Data ss:Type="String">PART3</Data></Cell>
<Cell ><Data ss:Type="String">Part3 Description</Data></Cell>
<Cell ><Data ss:Type="String">Buy_Part</Data></Cell>
<Cell ><Data ss:Type="Number">0</Data></Cell>
<Cell ss:StyleID="s258"/>
</Row>
Я хочу удалить узлы XML, ищущие значение внутри узла.
Пример Я хочу найти значение "PART3" в приведенном выше примере и хочу удалить узел COmplete, содержащий это значение. Таким образом, вывод должен быть только как ниже
<Row><Cell ss:StyleID="s245"><Data ss:Type="String">ABSOLUTE</Data></Cell>
<Cell ><Data ss:Type="String">Yellow</Data></Cell>
<Cell ><Data ss:Type="String">Exist</Data></Cell>
<Cell ><Data ss:Type="Number">30</Data></Cell>
<Cell ss:StyleID="s258"/>
</Row>
Я написал ниже сценарий
$doc = new DOMDOcument;
$doc->loadxml($xmldata);
$item_id = "PART3";
$xpath = new DOMXpath($doc);
foreach($xpath->query('//Row[Cell/Data="' . $item_id . '"]') as $node) {
$node->parentNode->removeChild($node);
}
echo $doc->savexml();
Но он отображает полный XML без удаления.
Пожалуйста, помогите мне, как удалить узел, выполнив поиск значения PART3, так как XML будет очень БОЛЬШИМ, и он содержит много <ROW><CELL><DATA></Data></Cell><ROW>