Ben neler olduğunu anladım düşünüyorum. Bu gibi bir kod Verilen:
$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);
Çıktısı şudur:
SimpleXMLElement Object
(
[node] => value
)
SimpleXMLElement Object
(
[node] => SimpleXMLElement Object
(
[0] =>
)
)
SimpleXMLElement Object
(
[node] => SimpleXMLElement Object
(
)
)
Yani, bunu yapmak için, böylece durumda # 2 boş elemanı (ikinci argüman boş bir dize ya da olacak eğer bilmiyorsanız yani), sadece böyle bir şey yapabileceğini oluşturulmadı:
$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);
Çıkışı için:
SimpleXMLElement Object
(
[node] => SimpleXMLElement Object
(
)
)
Or in JSON:
{"node":{}}
İstediğin bu mu?
Şahsen, ben SimpleXML kullanın, çünkü garip davranış bu tür değil, sadece asla - bu önemli gelişme aşamasında olduğunu ve PHP5 (deleteChild gibi, replaceChild vb) DOM manipülasyon yapmak için gereken yöntemleri 2/3 gibi eksik .
Ben (bu libxml2'nin bir arayüz olduğundan, standart, hızlı ve özellik tam olduğu) DOMDocument kullanın.