0

ループせずに 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);

それはうまくいかないようです。属性をどのように説明するのですか?

ありがとう!

4

1 に答える 1

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
)

したがって、推奨事項。

于 2012-12-03T16:06:16.297 に答える