나는 무슨 일이 일어나고 있는지 알았습니다. 이 같은 감안할 코드 :
$xml = new SimpleXMLElement('<xml></xml>');
$xml->addChild('node','value');
print_r($xml);
$xml = new SimpleXMLElement('<xml></xml>');
$xml->addChild('node','');
print_r($xml);
$xml = new SimpleXMLElement('<xml></xml>');
$xml->addChild('node');
print_r($xml);
출력은 이것이다 : 사례 # 2 빈 요소가 생성되지 않도록
그래서
SimpleXMLElement Object
(
[node] => value
)
SimpleXMLElement Object
(
[node] => SimpleXMLElement Object
(
[0] =>
)
)
SimpleXMLElement Object
(
[node] => SimpleXMLElement Object
(
)
)
, 그것을 만들 (당신이 모르는 즉 경우 두 번째 인수가 빈 문자열 여부를) 될 것입니다, 당신은 이런 식으로 뭔가를 할 수 :
$mystery_string = '';
$xml = new SimpleXMLElement('<xml></xml>');
if (preg_match('#\S#', $mystery_string)) // Checks for non-whitespace character
$xml->addChild('node', $mystery_string);
else
$xml->addChild('node');
print_r($xml);
echo "\nOr in JSON:\n";
echo json_encode($xml);
출력하려면 :
SimpleXMLElement Object
(
[node] => SimpleXMLElement Object
(
)
)
Or in JSON:
{"node":{}}
원하는 것이 맞습니까?
개인적으로 필자는 결코 이상한 행동으로 인해 결코 절대로 SimpleXML을 사용하지 않습니다. 아직 개발이 진행 중이고 PHP5에서 DOM 조작을 수행하는 데 필요한 메소드의 2/3이 빠졌습니다 (예 : deleteChild , replaceChild 등).
DOMDocument (libxml2에 대한 인터페이스이기 때문에 표준화되고 신속하며 기능이 완벽합니다)를 사용합니다.
트릭은 JSON 인코딩 전에 simpleXML 객체를 배열에 캐스트하는 것입니다. – null