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

您可以尝试使用 XPath 像这样获取祖父母

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

我很少使用 SimpleXML,但你能不能不这样做:

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

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

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

  }

}

编辑:更改代码以正确显示名称标签中的数据(如以下评论中建议的 OP)。

于 2012-06-29T03:42:21.853 回答