Как удалить родительский узел XML, проверив его значение в PHP DOM - PullRequest
1 голос
/ 24 июня 2010

У меня есть 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>

1 Ответ

0 голосов
/ 24 июня 2010

Ваш XPATH выглядит правильно ... просто любопытно, но вы упоминаете, что это пример фрагмента XML. Может быть, регистр тегов XML в реальном XML немного отличается, вызывая несоответствие в вашем XPATH?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...