2012-12-03 81 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); 

這似乎並不奏效。我如何解釋屬性?

謝謝!使用print_r()

+0

請在提問前先閱讀說明書。這在PHP手冊的標題「示例」下進行了解釋:http://php.net/simplexml.examples-basic – feeela

回答

1

角色到字符串:動態創建

<?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擴展對象。

澄清:這樣

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

    [0] => 96174405 
) 

推薦:

如果不轉換爲字符串,print_r()將改爲顯示這一點。

+0

不適用於我的代碼。我有$ collection = simplexml_load_file('/ file.xml') 另外,有沒有一種方法可以引用屬性來確保我正在訪問我想訪問的內容? –

+0

如果它不適用於您的XML,請發佈您的XML。這也很好解釋什麼「不起作用」對你來說意味着什麼。 –

+0

沒關係!我有一個類型。它確實有效。但是,還有一種方法可以引用該屬性以確保我訪問正確的字段?謝謝! –

相關問題