0

xmlファイルをロードしています

$xml = simplexml_load_file('status.cfg');

XML ファイルは次のスキームに従います。

    <statuses>
    <status>
        <title>Blackboard</title>
        <shorttitle>blackboard</shorttitle>
        <level>1</level>
        <greenstatus>checked</greenstatus>
        <yellowstatus></yellowstatus>
        <redstatus></redstatus>
    </status>

    <status>
        <title>Faculty/Staff Email</title>
        <shorttitle>fsemail</shorttitle>        
        <level>2</level>
        <greenstatus></greenstatus>
        <yellowstatus>checked</yellowstatus>
        <redstatus></redstatus>
    </status>
</statuses>

それはそれをうまく読みます。しかし、新しいxmlファイルを作成すると

$doc = new SimpleXMLElement('<xml/>');

そしてそれを書く

$doc->asXml('status.cfg');

このようにxmlファイルを吐き出します

<?xml version="1.0"?>
<xml>
        <statuses>
        <status>
            <title>Blackboard</title>
            <shorttitle>blackboard</shorttitle>
            <level>1</level>
            <greenstatus>checked</greenstatus>
            <yellowstatus></yellowstatus>
            <redstatus></redstatus>
        </status>

        <status>
            <title>Faculty/Staff Email</title>
            <shorttitle>fsemail</shorttitle>        
            <level>2</level>
            <greenstatus></greenstatus>
            <yellowstatus>checked</yellowstatus>
            <redstatus></redstatus>
        </status>
    </statuses>
</xml>

これにより、元のページが次のようなコマンドを使用して読み取ることができなくなります

$xml->status[0]->shorttitle;

ただし、外側の xml タグを削除すると、それを読み取ることができます。何か案は?

4

1 に答える 1

3

ある場合<statuses>はルート ノードであり、別の場合<xml>はルート ノードであり<statuses>、最初のネストされたノードとして使用されます。別のネスト レベルを追加して、同じ方法でデータを読み取ることができると期待する理由がわかりません。あなたの場合、いつ<xml>ルートノードになるか、次のようなデータを読み取る必要があります

$xml->statuses->status[0]->shorttitle
于 2013-09-19T19:56:35.457 に答える