Удалить пустые строки после того, как я удалил элементы XML?

Я удалил некоторые элементы из XML-файла с Simpledom.

код:

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

вот исходный файл:

<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>

файл потом:

<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>

Интересно, как я мог также удалить пустые строки, которые остались после того, как я запустил код удаления?

Спасибо!

2 ответа

На случай, если вы захотите удалить ВСЕ эти пробелы для вывода, есть простой способ ниже:

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

Вы можете настроить таргетинг на пробельные текстовые узлы с помощью XPath.

Если узлы, которые вы хотите удалить //entity[name='mac'] затем текстовый узел пробела, прежде чем он будет

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

А затем вы можете удалить оба набора узлов, используя | оператор и ваша команда становится:

$this->xmlDocument->removeNodes(
    "//entity[name='mac'] | //text()[normalize-space(.) = ''][following-sibling::entity[position()=1][name='mac']]"
);
Другие вопросы по тегам