"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso excluir um nó XPath usando SimpleXML e DOMDocument?

Como posso excluir um nó XPath usando SimpleXML e DOMDocument?

Publicado em 2024-11-08
Navegar:108

How Can I Delete an XPath Node Using SimpleXML and DOMDocument?

SimpleXML: Excluindo um nó XPath

Neste artigo, exploraremos como excluir efetivamente um nó pai de um documento XML usando SimpleXML e XPath.

Compreendendo as limitações do SimpleXML

O código fornecido tenta usar SimpleXML para excluir um nó pai após encontrá-lo via XPath. No entanto, a função unset() do SimpleXML remove apenas a referência do objeto armazenado em uma variável, não o nó em si.

DOMDocument to the Rescue

Para superar as limitações do SimpleXML, considere usando DOMDocument, que manipula a estrutura de documentos XML de forma mais direta.

Solução Usando DOMDocument

  1. Crie um objeto DOMDocument e carregue o arquivo XML nele.
  2. Use XPath para consultar e selecionar o nó de destino.
  3. Remova o pai nó usando $node->parentNode->removeChild($node).

Exemplo de código e saída

$doc = new DOMDocument;
$doc->loadXML(...);
$item_id = 456;

$xpath = new DOMXpath($doc);
foreach($xpath->query('//items[info/item_id="' . $item_id . '"]') as $node) {
  $node->parentNode->removeChild($node);
}
echo $doc->saveXML();

Este código remove o nó do produto com item_id 456, resultando em um documento XML modificado sem esse nó.

Conclusão

DOMDocument permite uma manipulação mais robusta de documentos XML, incluindo a remoção direta de nós. Embora SimpleXML possa ser conveniente para consultas XPath básicas, DOMDocument é uma escolha mais adequada para tarefas de manipulação de XML mais complexas.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3