php 구현 배열 xml 사례 분석
수요
최근 바 이 두,360,신마 검색 을 위 한 사이트 사 이 트 맵 은 세 개의 형식 이 모두 xml 이지 만 구체 적 인 세부 사항 은 차이 가 있다.
처음에 dom 을 사 용 했 는데 sax 를 사용 하지 않 았 습 니 다.몇 단락 을 썼 더 니 너무 어 리 석 었 습 니 다.배열 이 xml 로 전환 하 는 라 이브 러 리 가 있 을 까 생각 했 습 니 다.
0x01 array2xml
검색 해 보 니 git 주소 가 있어 소 매 를 걷 고 마 르 기 시작 했다.
예 는 다음 과 같다.
THE CODE:
$xml = new ArrayToXML();
print $xml->buildXML($input);
INPUT:
$input = array('product' => array(
'@id' => 7,
'name' => 'some string',
'seo' => 'some-string',
'ean' => '',
'producer' => array(
'name' => null,
'photo' => '1.png'
),
'stock' => 123,
'trackstock' => 0,
'new' => 0,
'pricewithoutvat' => 1111,
'price' => 1366.53,
'discountpricenetto' => null,
'discountprice' => null,
'vatvalue' => 23,
'currencysymbol' => 'PLN',
'#description' => '',
'#longdescription' => '',
'#shortdescription' => '',
'category' => array(
'photo' => '1.png',
'name' => 'test3',
),
'staticattributes' => array(
'attributegroup' => array(
1 => array(
'@name' => 'attributes group',
'attribute' => array(
0 => array(
'name' => 'second',
'description' => 'desc2',
'file' => '',
),
1 =>
array(
'name' => 'third',
'description' => 'desc3',
'file' => '',
),
)
)
)
),
'attributes' => array(),
'photos' => array(
'photo' => array(
0 => array(
'@mainphoto' => '1',
'%' => '1.png',
),
1 => array(
'@mainphoto' => '0',
'%' => '2.png',
),
2 => array(
'@mainphoto' => '0',
'%' => '3.png',
)
)
)
));
OUTPUT (XML data):
<?xml version="1.0" encoding="UTF-8"?>
<data>
<product id="8">
<description><[CDATA[]]></description>
<longdescription><[CDATA[]]></longdescription>
<shortdescription><[CDATA[]]></shortdescription>
<name>some string</name>
<seo>some-string</seo>
<ean></ean>
<producer>
<name></name>
<photo>1.png</photo>
</producer>
<stock>123</stock>
<trackstock>0</trackstock>
<new>0</new>
<pricewithoutvat>1111</pricewithoutvat>
<price>1366.53</price>
<discountpricenetto></discountpricenetto>
<discountprice></discountprice>
<vatvalue>23</vatvalue>
<currencysymbol>PLN</currencysymbol>
<category>
<photo>1.png</photo>
<name>test3</name>
</category>
<staticattributes>
<attributegroup name="attributes group">
<attribute>
<name>second</name>
<description><p>desc2</p></description>
<file></file>
</attribute>
<attribute>
<name>third</name>
<description><p>desc3</p></description>
<file></file>
</attribute>
</attributegroup>
</staticattributes>
<photos>
<photo mainphoto="1">1.png</photo>
<photo mainphoto="0">2.png</photo>
<photo mainphoto="0">3.png</photo>
</photos>
</product>
</data>
이 를 통 해 알 수 있 듯 이\#는 CDATA 를 나타 내 고@은 속성 을 나타 내 며%는 속성 이 있 을 때 이 요소 자체 의 값 을 나타 내 며 매우 간결 합 니 다.또한 배열 은 중복 요 소 를 배열 의 key 로 언급 해 야 합 니 다.중복 요소 의 각종 속성 은 배열 의 값 입 니 다.위 처럼 0,1,2 색인 을 지정 하지 않 고 직접 사용 하면 됩 니 다.
0x 02 개선
그러나 bug 가 있 는 것 을 발 견 했 습 니 다.루트 노드 는 CDATA 로 시작 할 수 없습니다.
CDATA 와 속성 이 동시에 존재 할 수 없 는 기능 도 하나 부족 하 다.
그래서 소스 코드 를 읽 고 이 두 가 지 를 개선 하여 작가 에 게 제출 했 고 합병 되 었 다.
나 는"!"라 는 부 호 를 추가 로 추가 했다.CDATA 와 속성 이 동시에 존재 할 때 다음 과 같이 쓰 십시오.
$input = [
"key" =>[
"@id" => 1,
"!" => 2
]
]
PS:여기 서 xml 작업 에 관 한 온라인 도 구 를 몇 가지 더 제공 하여 참고 하 시기 바 랍 니 다.
온라인 XML/JSON 상호 변환 도구:
http://tools.jb51.net/code/xmljson
온라인 포맷 XML/온라인 압축 XML:
http://tools.jb51.net/code/xmlformat
XML 온라인 압축/포맷 도구:
http://tools.jb51.net/code/xml_format_compress
XML 코드 온라인 포맷 미화 도구:
http://tools.jb51.net/code/xmlcodeformat
더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.