2014-11-13 2 views
0

노드의이 부분에 대한 정확한 용어는 무엇인지 모르지만 Location1 노드에서 데이터를 가져 오려고합니다. 여기 php xmlreader 복잡한 노드에서 자식 세부 정보 얻기

는 XML 여기

<ID>123344</ID> 
<Name><![CDATA[The Pavillion]]></Name> 
<Date>2014-07-07</Date> 
<Country>United Kingdom</Country> 
<Location1 GeonameID="8000001"><en><![CDATA[England]]></en></Location1> 
<Location2 GeonameID="8000911"><en><![CDATA[West Yorkshire]]></en></Location2> 

내가 ID와 이름

if ($xml->name == 'ID') { $xml->read(); $ref = $xml->value; } 
if ($xml->name == 'Name') { $xml->read(); $name = $xml->value; } 

하지만 어떻게 내가 영국에있을 것입니다있는 Location1 노드의 값을 얻을 수 있습니까에 대한 올바른 값을 얻고 방법이다 . 나는 이것을 시도했으나 효과가 없다.

if ($xml->name == 'Location1') { $xml->read(); $name = $xml->value->en; } 

저는 xmlreader 대신 simplexml을 사용하는 데 익숙하지만 간단한 노드 이외의 값을 얻는 방법을 놓치고 있습니다.

많이 감사합니다.

답변

0

XMLReader에는 자동 매핑이 없습니다. $xml->value->en;과 같은 콘텐츠는 작동하지 않습니다.

XMLReader는 $xml->read();을 사용하여 XML에서 노드를 가져옵니다. 당신은 가능성이 있습니다. Location* 태그의 유효성을 검사하는 조건 안에 로직을 넣으십시오. 요소 노드 en을 얻으려면 하위 노드를 읽어야합니다.

또는 XMLReader가 외부 노드 (게시 한 XML 조각의 부모 노드)를 DOM으로 확장하도록하십시오. 그런 다음 Xpath를 사용하거나 SimpleXMLElement로 변환 할 수 있습니다.