2009-11-16 2 views
0

PEAR XML Serializer를 사용하여 배열 입력에서 xml 결과를 생성합니다. 빈 배열 요소가 다음과 같이 인코딩되었음을 알았습니다 : < arraykey/>. 차라리 arraykey 그것을 이런 식으로 < 원합니다 > </arraykeypear xml_serializer에서 빈 태그 처리

> 다음은 내 옵션입니다

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

는이 문제를 해결하기 위해 추가 할 수있는 다른 옵션이가? 어떤 라이브러리의 실제 상태에서

답변

1

, 그것은 PEAR XML_Util 사용하고 XML_Util::createTagFromArray()의 코드를 보면, 그것은 빈 태그에 대해 다음을 수행 캐릭터와

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

당신은 할 수 아마도 가짜 빈 컨텐츠를 ' '과 같은 공백이 있지만 그 결과는 <arraykey> </arraykey>입니다.

BTW, <arraykey/>은 XML에서 완전히 유효합니다 (빈 태그의 경우 권장되며 XHTML에서도 사용됩니다).

0

<tag />보다 <tag></tag> 형식을 선호하는 구체적인 이유가 있습니까? 주목 (다른 포스터가 말했듯이) <tag />은 완전히 유효한 XML입니다. 개인적으로 나는 빈 태그에 대해 자기 닫는 것을 선호합니다.