Почему PHP SimpleXML children () возвращает ноль для пустого тега?

У нас есть следующий образец XML:

<xml>
<call>
<branchId>2</branchId>
<item_main_display>1</item_main_display>
<workstation_Id>1</workstation_Id>
<formatted_ticket_number>203</formatted_ticket_number>
<queue_letter></queue_letter>
<service_Id>17</service_Id>
<service_Name>konsultanti Queue</service_Name>
<isflashing>false</isflashing>
<workstation_Name>ServicePoint_D924</workstation_Name>
<callTime>1442583923157</callTime>
<timestamp>1442583923</timestamp>
<eventTime>2015-09-18T17:45:23.114+0400</eventTime>
</call>
</xml>

Используя следующий код PHP, мы пытаемся получить доступ ко всем узлам xml;

$xml=simplexml_load_file("sample.xml");

$xmlStr="";
$xmlStr.="<xml>";

foreach($xml->children() as $child1)
{
$xmlStr.="<". $child1->getName().">";
foreach($child1->children() as $child2){
$xmlStr.="<". $child2->getName() .">". $child2 ."</". $child2->getName() .">";
}
$xmlStr.="</". $child1->getName().">";
}
$xmlStr.="</xml>";

Этот код работает нормально, за исключением: для тега

<queue_letter></queue_letter>

Для этого тега $ child1-> children () возвращает null; Но если я введу пробел между тегами

<queue_letter>     </queue_letter>

или перевод строки, или любой другой символ, тег возвращается.

Это нормальное поведение? Как мы можем вернуть дочерние теги, которые не содержат символов?

Благодарю вас.

0

Решение

Если между тегами есть пробел, тег не пустой — у него есть один текстовый узел, так как он является дочерним.

<queue_letter></queue_letter> такой же как <queue_letter /> и у этого тега просто нет детей, поэтому он всегда будет возвращать ноль

0

Другие решения

Мне удалось решить этот случай следующим образом: мой PHP-сервер содержит смолу.jar
Я только что скачал последнюю версию и заменил оригинал.
Все работает отлично. Проверь это: Веб-сервер

-1