i xml elemanları kaldırdıktan sonra boş satırları kaldırmak?

2 Cevap php

i simpledom ile bir xml dosyadan bazı unsurlar kaldırıldı.

kodu:

$this->xmlDocument->removeNodes("//entity[name='mac']");

Burada ilk dosyadır:

<entity id="1000070">
    <name>apple</name>
    <type>category</type>
    <entities>
        <entity id="7002870">
            <name>mac</name>
            <type>category</type>
        </entity>
        <entity id="7024080">
            <name>iphone</name>
            <type>category</type>
        </entity>
        <entity id="7024080">
            <name>ipad</name>
            <type>category</type>
        </entity>
    </entities>
</entity>

sonradan dosyası:

<entity id="1000070">
    <name>apple</name>
    <type>category</type>
    <entities>




        <entity id="7024080">
            <name>iphone</name>
            <type>category</type>
        </entity>
        <entity id="7024080">
            <name>ipad</name>
            <type>category</type>
        </entity>
    </entities>
</entity>

Ayrıca ben kaldırma kodu koştu sonra kalan boş satırları kaldırmak nasıl acaba?

teşekkürler!

2 Cevap

XPath ile boşluk metin düğümleri hedef olabilir.

Olurdu önce kaldırmak istediğiniz düğümleri //entity[name='mac'] ardından boşluk metin düğümü ise

//text()[normalize-space(.) = ''][following-sibling::entity[position()=1][name='mac']]

Ve sonra, | operatörü ve komut olur kullanılarak hem nodesets kaldırabilirsiniz:

$this->xmlDocument->removeNodes(
    "//entity[name='mac'] | //text()[normalize-space(.) = ''][following-sibling::entity[position()=1][name='mac']]"
);

Sadece durumda size çıkış için ALL bu boş alanlar kaldırmak istiyorsanız, basit bir şekilde aşağıda var:

$this->xmlDocument->removeNodes(
    "//entity[name='mac'] | //text()[normalize-space(.) = '']"
);