2012-12-03 3 views
0

루핑하지 않고 PHP (simplexml)로 XML 파일의 특정 부분에 액세스하려고합니다. 나는 단지 특정 분야에 접근하고 싶다. 그러나 어떻게? 이것은 XML 파일의 구조입니다.simplexml로 특성을 가진 자식에 액세스하는 방법 ... 어떻게?

<collection xmlns="http://www.loc.gov/MARC21/slim"> 
    <record> 
     <datafield tag="010" ind1=" " ind2=" "> 
      <subfield code="a">96174405</subfield> 
     </datafield> 
     <datafield tag="035" ind1=" " ind2=" "> 
      <subfield code="a">(OCoLC)ocm34158924</subfield> 
     </datafield> 
    </record> 
</collection> 

예를 들어, 96174405는 어떻게 인쇄 할 수 있습니까?

print_r ($collection->record->datafield[0]->subfield); 

그건 작동하지 않는 것 같습니다. 속성을 어떻게 설명합니까?

감사합니다. 문자열

+0

질문을하기 전에 먼저 설명서를 읽으십시오. PHP 매뉴얼에서 "Examples"제목 아래에 설명되어 있습니다. http://php.net/simplexml.examples-basic – feeela

답변

1

캐스트 print_r()를 사용하여 :

<?php 

$collection = simplexml_load_string('<collection xmlns="http://www.loc.gov/MARC21/slim"> 
    <record> 
     <datafield tag="010" ind1=" " ind2=" "> 
      <subfield code="a">96174405</subfield> 
     </datafield> 
     <datafield tag="035" ind1=" " ind2=" "> 
      <subfield code="a">(OCoLC)ocm34158924</subfield> 
     </datafield> 
    </record> 
</collection>'); 

print_r((string)$collection->record->datafield[0]->subfield); 

SimpleXML을 확장 객체는 동적으로 생성됩니다.

명확한 설명 : 당신이 문자열로 캐스팅하지 않는 경우

, print_r() 대신이 표시됩니다 :

SimpleXMLElement Object 
(
    [@attributes] => Array 
     (
      [code] => a 
     ) 

    [0] => 96174405 
) 

를 따라서 추천.

+0

내 코드에서 작동하지 않습니다. 나는 $ collection = simplexml_load_file ('/ file.xml')을 가지고있다. 또한 액세스하려는 것을 액세스하도록 애트리뷰트를 참조 할 수있는 방법이 있는가? –

+0

XML과 함께 작동하지 않으면 XML을 게시하십시오. 또한 "효과가 없다"는 것이 당신에게 어떤 의미인지 설명하는 것이 좋습니다. –

+0

신경 쓰지 마세요! 나는 타입이 있었어. 그것은 효과가있다. 그러나 다시 올바른 필드에 액세스 할 수 있도록 속성을 참조하는 방법이 있습니까? 감사! –

관련 문제