0

curlこのタイプの応答を次の方法で取得します。

<ArrayOfServerFile>
    <ServerFile>
        ...
        <FileType>Folder</FileType>
        <Identifier>x123</Identifier>
        <Name>Client Templates</Name>
        ...
    </ServerFile>
    <ServerFile>
        ...
        <FileType>XpressDox Template</FileType>
        <Identifier>y456</Identifier>
        <Name>contact-information.xdtpl</Name>
        ...
    </ServerFile>
    ...
</ArrayOfServerFile>

この情報をツリー状に保存したいdata structure

私はこのようなことを試しました:

// Pseudo-code:
function run_procedure()
{
    get XML data via curl

    if FileType == 'Folder'

        save name and other useful data into $tree_like_data_structure
        run_procedure() // recursive call

    else if FileType == 'XpressDox Template'

        save name and other useful data into $tree_like_data_structure
}

var_dump($tree_like_data_structure);

アイデアは、保存されたデータを次のように表すことです。

[0][0] -> data
        [1][0] -> data
        [1][1] -> data
        [1][2] -> [2][0] -> data
                  [2][1] -> data
        [1][3] -> data

これを達成するのはそれほど難しくないと確信していますが、成功せずに多くの時間を失いました. どんなヒントでも大歓迎です。ありがとう。-

編集1

私の主な関心事は、 [深さ] [要素] インデックスを取得する方法と、データ (タイプ、名前、コンテンツなど) をレベルする方法です

編集2

基本的に、これは再帰的なプログラミングの問題です。たぶんwhile、再帰関数よりもステートメントを介して簡単に実行できますか?

4

1 に答える 1

0

DOM で SimpleXML を使用して配列を作成してみてください。

$dom = new DOMDocument;
$dom->loadXML('
<ArrayOfServerFile>
    <ServerFile>
        <FileType>Folder</FileType>
        <Identifier>x123</Identifier>
        <Name>Client Templates</Name>
    </ServerFile>
</ArrayOfServerFile>');

if (!$dom) {
    echo 'Error while parsing the document';
    exit;
}
$s = simplexml_import_dom($dom);
echo $s->ServerFile[0]->FileType;
于 2012-09-03T02:20:17.117 に答える