Удалить пустые строки после того, как я удалил элементы 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']]"
);