2009-08-18 2 views
1

XML 데이터를 사용 가능한 문자열로 잘라서 나중에 스크립트에서 다시 사용하려고합니다.PHP에서 이상한 형식의 XML을 구문 분석하려고합니다.

나는 Curl 요청을 통해 데이터를 수신하고 있으며, 그의 성과는 훌륭합니다. 지금

이 내가 수신하고있는 XML의 일부 .. 데이터가 나를 죽이고 자르고

<professions> 
    <skill key="IT Specialist" maxage="40" group="IT" worked="5"/> 
    <skill key="Assistant" maxage="35" group="Office" worked="5"/> 
</professions> 

지금은 물론 내가 함수 필터링 데이터 등을 할 수있다 (전체 데이터 부분은 약 90 라인입니다) , 그러나 나는 그저 일을 끝내기위한 다른 방법이 있다고 느낍니다. XML이 $ var에로드되었습니다.

문자열 등을 읽는 것보다 더 잘하는 데 도움이되는 경우 도움이 될 것입니다.

+1

@Fons - 내 편집을 되돌릴 수 없습니까? 나의 변화로 인해 XML이 실제로 나타납니다. –

+0

보여 주려고했는데, 고마워. 편집 해줘. – Fons

답변

1

xml_parse_into_struct()이 좋습니다.

+0

지금 당장 이걸 살펴보면 결과가 계속 나오게 될 것입니다. – Fons

+0

배열의 데이터 절반을 얻는 것이 좋습니다! 값은 기록되며 인덱스는 기록되지 않습니다. 그 방법을 찾으려고합니다. 고마워요! 감사합니다. Fons – Fons

+0

매력처럼 작동합니다! 매우 빠릅니다. 고마워요 Fons – Fons

0

죄송합니다 제가 제대로 문제를 이해하지 않는,하지만 PHP의 XML API를 사용하는 가장 쉬운 지금까지 단순히 SimpleXML으로 XML을 던지고 문제이고 그것은 또한 선택적 데이터 추출을 위해 XPath를 지원하는 경우 :

$data = simplexml_load_string($var); 
echo $data->skill[0]['key']; // will print "IT Specialist" 
foreach ($data->skill as $skill) { 
    printf('%s in group %s with max. age %d and %d year(s) of experience', 
     $skill['key'], $skill['group'], $skill['maxage'], $skill['worked']) . "\n"; 
} 
/* 
* this will print: 
* IT Specialist in group IT with max. age 40 and 5 year(s) of experience 
* Assistant in group Office with max. age 35 and 5 year(s) of experience 
*/ 
$keys = $data->xpath('/professions/skill/@key'); 
foreach ($keys as $key) { 
    echo $key . "\n"; 
} 
/* 
* this will print: 
* IT Specialist 
* Assistant 
*/ 
// and you can do a lot more... 

괴괴 망측 한 데이터 구조로 귀찮아하는 이유가 무엇인지 생각할 수 없습니다. xml_parse_into_struct()은 주어진 문제를 훨씬 쉽게 처리 할 수있는 도구가있을 때 생성합니다 (자체 XML 파서와 비슷한 기능을 작성할 때 외에). 그러나 아마도 당신의 질문을 오해했을 것입니다 ...

관련 문제