用simplexml访问具有属性的孩子......怎么样?

时间:2012-12-03 16:02:03

标签: php xml parsing xml-parsing simplexml

我正在尝试使用PHP(simplexml)访问XML文件的特定部分而不进行循环。我只是想访问一个特定的字段。但是怎么样?这是xml文件的结构:

<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);

这似乎不起作用。我如何考虑属性?

谢谢!

1 个答案:

答案 0 :(得分: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
)

因此推荐。