2015-01-18 2 views
1

SimpleXML PHP로이 라벨을 구문 분석하지 못했습니다. PHP 구문 분석 <cpe-23 : cpe23-item name = "...">?

내 파일입니다

<cpe-item name="cpe:/a:%240.99_kindle_books_project:%240.99_kindle_books:6::"> 
    <cpe-23:cpe23-item name="cpe:2.3:a:\*:*:*:*:*:*:*:*:*:*"/> 
</cpe-item> 

그리고 cpe23에 이름 콘텐츠를 구문 분석 할 : cpe23-항목을 선택합니다.

이 지금은 내 코드입니다 : 접두사 cpe-23:와 네임 스페이스

foreach ($xml->{'cpe-item'} as $cpe) { 
    echo $cpe->children('cpe-23', TRUE) // This is the line I have to modify 
} 

답변

0

$cpe->children('cpe-23', TRUE) 반환 모든 아이들.

특정 어린이를 찾으려면 요소가 <cpe23-item ...>이므로 가장 쉬운 방법은 이름 (이 경우 ->cpe23-item)으로 참조하는 것입니다. 그러나 -은 일반적으로 "빼기"를 의미하므로 PHP의 파서를 혼동하게 만듭니다. 당신은 ->{cpe23-item}

과 같은 이름 주위에 {}을 사용하는 것을 피할 수 있습니다. 해당 요소의 속성을 얻으려면 일반적으로 배열 액세스를 사용합니다. ['name']. 그러나 XML 네임 스페이스의 특징은 여기 name= 특성이 네임 스페이스가 없음을 의미하므로 ->attributes() 함수를 사용하여 호출로 "입력 한"cpe-23 네임 스페이스를 "떠나야"합니다. 그러면 ->attributes(null)->name이됩니다.

모두 함께 퍼팅, 당신은 :

echo $cpe->children('cpe-23', TRUE)->{cpe23-item}->attributes(null)->name;