Armut xml_serializer boş etiketleri ile başa çıkmak

2 Cevap php

Dizi girişlerden xml sonuçlar üretmek için PEAR XML Serializer kullanarak Im. : Ben boş dizi öğeleri böyle kodlanmış olduğunu öğrendim. Ben oldukça bu şekilde tercih ediyorum

Aşağıda benim seçenekler şunlardır:

			$options = array
			(
				'indent' => '	',
				'defaultTagName' => $this->xml_tag_name,
				'addDecl' => true,
				'encoding'  => 'UTF-8',
				'rootName' => $this->xml_root_name,
				XML_SERIALIZER_OPTION_RETURN_RESULT => true
			);

Bunu düzeltmek eklemek için başka seçenekler var mı?

2 Cevap

Kütüphanenin asıl devlet yok, o PEAR XML_Util kullanır ve size koduna bakarsanız XML_Util::createTagFromArray(), bu boş etiketler için aşağıdakileri yapar:

if (!isset($tag['content']) || (string)$tag['content'] == '')
{
    $tag = sprintf('<%s%s />', $tag['qname'], $attList);
}

Böyle ' ' gibi bir boşluk içeriyor, ancak böyle bir şey haline neden olur bir dize ile yapabildin muhtemelen sahte boş içeriği <arraykey> </arraykey>.

BTW, <arraykey/> (o da XHTML kullanılan, boş etiketler için önerilmektedir) XML tamamen yasaldır.

Eğer <tag /> üzerinde <tag></tag> biçimini tercih somut bir nedeni var mı? <tag /> (başka bir poster dediği gibi) tamamen geçerli XML olduğunu kaydetti. Şahsen ben bir boş etiket için kendini kapatmakta tercih.