我确信这个问题有一个非常明显的解决方案......但它在暗示我。
我有一个 XML 提要,我想从中提取信息 - 仅来自具有特定 ID 的项目。假设我们有以下 XML:
<XML>
<item>
<name>John</name>
<p:id>1</id>
<p:eye>Blue</eye>
<p:hair>Black</hair>
</item>
<item>
<name>Jake</name>
<p:id>2</id>
<p:eye>Hazel</eye>
<p:hair>White</hair>
</item>
<item>
<name>Amy</name>
<p:id>3</id>
<p:eye>Brown</eye>
<p:hair>Yellow</hair>
</item>
<item>
<name>Tammy</name>
<p:id>4</id>
<p:eye>Blue</eye>
<p:hair>Black</hair>
</item>
<item>
<name>Blake</name>
<p:id>5</id>
<p:eye>Green</eye>
<p:hair>Red</hair>
</item>
</xml>
而且我只想将 ID 为 3 和 1 的人拉到页面上的特定位置(不会有双重 ID - 每个项目的唯一 ID)。使用 SimpleXML 和 forloop,我可以使用 PHP 在页面上轻松显示每个项目 - 使用一些“if ($item->{'id'} == #)”语句(其中 # 是我要查找的 ID(,我还可以显示我要查找的每个 ID 的信息。
我遇到的问题是如何在页面上分发信息。我正在尝试将信息拉到页面上的特定位置我第一次尝试在页面上分配特定字段的工作如下:
<html>
<head><title>.</title></head>
<body>
<?php
(SimpleXML code / For Loop for each element here...)
?>
<H1>Staff Profiles</h1>
<h4>Maintenance</h4>
<p>Maintenance staff does a lot of work! Meet your super maintenance staff:</p>
<?php
if($ID == 1) {
echo "Name:".$name."<br/>";
echo "Eye Color:".$eye."<br/>";
echo "Hair Color:".$hair."<br/>";
?>
<h4>Receptionists</h4>
<p>Always a smiling face - meet them here:</p>
<?php
if($ID == 3) {
echo "Name:".$name."<br/>";
echo "Eye Color:".$eye."<br/>";
echo "Hair Color:".$hair."<br/>";
?>
<H4>The ENd</h4>
<?php (closing the four loop) ?>
</body>
</html>
但它不起作用 - 它随机开始在我的页面上重复元素(甚至不是 XML 元素)。我的方法可能很……初级;所以非常感谢正确方向的一点。有什么建议吗?
编辑:
新(新)XPATH 代码:
$count = 0;
foreach ($sxe->xpath('//item') as $item) {
$item->registerXPathNamespace('p', 'http://www.example.com/this');
$id = $item->xpath('//p:id');
echo $id[$count] . "\n";
echo $item->name . "<br />";
$count++;
}