PHP: yinelemeli işlem ardından DOMDocument dan DOMElements kaldırmak

0 Cevap php

XML ile çalışmak için PHP'nin DOMDocument ve ilgili sınıfları kullanıyorum. XML yukarıdan aşağıya doğru, belirli bir düzen içinde işlenmiş olmalıdır işleme talimatları, derin sığ içerir.

Ben, tüm DOMDocument alan bir özyinelemeli fonksiyon kullanıyorum sonra tüm şekilde aşağı, foreach çocuk düğüm kendini çağırır.

Ben onları işlemek sonra bu çocuk düğümleri bazı silmeniz gerekir. Sorun en kısa sürede bir çocuk düğüm silinir gibi, foreach "ayarsız" ve ben artık çocuk düğümler silemezsiniz görünüyor olmasıdır.

Örnek XML doc:

<root id="1">
    <instruction id="2">
        <inner id="3"/>
    </instruction>
    <instruction id="4">
        <inner id="5"/>
    </instruction>
</root>

I inner[@id=3] Önce, sonra silmek işlemek gerekir. Sonra instruction[id=2] işlemek ve onu silmek gerekir. Buraya kadar, her şey yolunda.

Sonraki I inner[@id=5] işlemek ve onu silmek gerekir. Ben de ok / süreci okumak, ama bunu kaldırmaya çalıştığınızda yapabilirsiniz:

$parentNode=$inner->parentNode;
$parentNode->removeChild($inner);

Hiçbir şey olmuyor. Bu elemanları şimdi belgede hangi hakkında ilk yönergesi düğümü çıkarmadan PHP karıştı yapmış gibi görünüyor.

Ben bu sırayla tüm düğümleri üst ve kaldırmak için alttan XML işlemek mümkün olduğunu biliyorum, ama ben yukarıdan alttan gitmek için özel bir ihtiyaç var.

Burada bilgi Bir diğer parça - Bunu işlerken de benim seçenekleri değiştirir durumda, belgeye bazı yeni düğümler ekliyorum.

Ben bu işe almak için ne yapmak gerekiyor?

0 Cevap