노드 중 하나가 모든 정보를 함께 모으는 xml이 붙어있어서 3 개의 개별 객체로 분할해야합니다. 이제 Description - Color, Size입니다. 그래서 나는 -
과 ,
문자를 분리하여 그런 식으로 처리 할 수 있다는 것을 알고 있습니다. 설명 [0]을 분리 할 수 있었지만 이제는 분할의 [1]과 [2] 부분을 잡는 방법이 혼란 스럽습니다.xml 노드의 분할 요소가 json으로 돌아 가기
는 XML : :
<Groups>
<Group>
<Item>
<Description>One Item - Color: Black, Size: 9</Description>
</Item>
</Group>
<Group>
<Item>
<Description>Two Item - Color: White, Size: 11</Description>
</Item>
</Group>
</Groups>
PHP는 :
$xml = simplexml_load_string($response);
$items = count($xml->Groups->Group->Item);
for ($i=0;$i<$items;$i++)
{
if ($i) {
$descriptions = $descriptions . '<br>' ;}
$descriptions = $descriptions . $xml->Groups->Group->Item[$i]->Description[0];
$descriptions = preg_split("/-/", $descriptions);
$descriptions = $descriptions[0];
}
$json = '{'. '"Description": "'.$descriptions.'",'.'}';
을 다음
-
과
,
에 대한 또 다른 분할 나는 이런 식으로 JSON으로 XML을 변환하고 이후 부분
그리고 나서 var itemDesc = json.Description;
그 변수는 반환합니다
One Item <br> Two Item <br >
그때 얻을 수있는 방법은 다음 두 부분으로 스플릿에서. 나는 다음과 같은 것을 시도했다 :
$color = $descriptions[1];
어떤 도움을 주셔서 감사합니다!
: 다음을 참조뿐만 아니라 당신의 반복을 단순화, 그것은 당신에게 아이디어를 줄 것이다 수동으로 XML 또는 JSON을 토큰으로 사용하거나 적절한 XML 파서 인 JSON 작성기를 생성하지 마십시오. 그렇지 않으면 인코딩이 누락 될 수 있습니다 (일부 콘텐츠의 경우 갑자기 실패합니다). PHP에서 모두 처리 할 수있는 libs가 많이 있습니다. 저수준에서 사용하고 변환 논리를 구현하십시오. – StaxMan
주석 주셔서 감사합니다. 혹시 좀 더 읽을 거리를 제공해 줄 수 있습니까? 나는 정말로 당신이 나에게 말하려고하는 것을 이해하지 못합니다. – Zac
코드를 다시 읽었으므로 simple-xml 파서를 제대로 사용하고 있습니다 (정규 표현식을 잘못 사용 했음). 하지만 JSON 작성기/생성기 패키지를 사용하여 출력 형식을 지정하는 것이 좋습니다. JSON 배열 (String 대신 쉼표로 구분 된 값)을 사용할 수 있으므로 클라이언트가 더 쉽게 사용할 수 있습니다. 또한 큰 따옴표 및 줄 바꿈 같은 문자가 JSON String에서 이스케이프되도록합니다. 그렇지 않은 경우 결과는 잘못된 JSON입니다. – StaxMan