您好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 />';
}
?>
感谢您的帮助!
答案 0 :(得分:0)
你可以尝试使用XPath来获得像这样的祖父母
$submission = $Entry->xpath("../..");
答案 1 :(得分:0)
我很少使用SimpleXML,但是你不能做类似的事情:
foreach ($Submissions->Submission as $Sub) {
foreach ($Sub->Entries->Entry as $Entry) {
echo $Sub->Name . ', ' . $Entry->EntryId.' , '.$Entry->Field2.' <br />';
}
}
编辑:更改了代码,以便在名称标记中正确显示数据(如下面评论中建议的那样)。