1

こんにちは、Stackoverflow コミュニティ - 熱狂的なプログラマーからの質問です。私はここでかなり調査しましたが、まだ理解できません。私が得ることができる助けに感謝します。

次の構造を持つ example.xml という XML ドキュメントがあります...

<Submissions>
    <Submission>
        <Name>Submission 001</Name>
        <Entries>
            <Entry>
                <EntryId>1</EntryId>
                <Field1>Foo</Field1>
            </Entry>

            <Entry>
                <EntryId>2</EntryId>
                <Field1>Bar</Field1>
            </Entry>
        </Entries>
    </Submission>
    <Submission>
        <Name>Submission 002</Name>
        <Entries>
            <Entry>
                <EntryId>1</EntryId>
                <Field1>Foo</Field1>
            </Entry>

            <Entry>
                <EntryId>2</EntryId>
                <Field1>Bar</Field1>
            </Entry>
        </Entries>
    </Submission>
</Submissions>

私は PHP で SimpleXML を使用しており、XML ドキュメントを解析して、次のようなブラウザにエコーしたいと考えています。

Submission 1, Entry 1, Foo
Submission 1, Entry 2, Bar
Submission 2, Entry 1, Foo
Submission 2, Entry 2, Bar

したがって、基本的な考え方は、XML ドキュメントをループして、すべてのエントリをそれが属する提出物に関連付けることです。

私は調査を行い、次のコードでエントリを出力することに満足していますが、エントリを提出物に関連付ける方法がわかりません。

<?php

$xml = simplexml_load_file('example.xml');

$Submissions = $xml;

foreach ($Submissions->Submission->Entries->Entry as $Entry) {

    echo $Entry->EntryId.' , '.$Entry->Field2.' <br />';

}

?>

あなたの助けに感謝!

4

2 に答える 2

0

SimpleXMLを使用することはめったにありませんが、次のようなことはできません。

foreach ($Submissions->Submission as $Sub) {

  foreach ($Sub->Entries->Entry as $Entry) {

    echo $Sub->Name . ', ' . $Entry->EntryId.' , '.$Entry->Field2.' <br />';

  }

}

編集: Nameタグのデータを正しく表示するようにコードを変更しました(OPが以下のコメントで提案したように)。

于 2012-06-29T03:42:21.853 に答える
0

XPathを使用して、祖父母をそのように取得してみることができます

$submission = $Entry->xpath("../..");
于 2012-06-29T03:40:43.263 に答える