2012-12-03 48 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

没关系!我有一个类型。它确实有效。但是,还有一种方法可以引用该属性以确保我访问正确的字段?谢谢! –

相关问题