这是我的xml文件note.xml文件
<?xml version="1.0" encoding="ISO-8859-1"?>
<agents>
<agent>
<id>1</id>
<image> img/primary-nav-logo.png</image>
<name>Tommy Jenkin</name>
<company>CJenkins Insurance</company>
<street>Insurance150 S State Stree</street>
<city>Linkend</city>
<phone>(773) 561-4331</phone>
</agent>
<agent>
<id>2</id>
<image> img/primary-nav-logo.png</image>
<name>Tommy Jenkin</name>
<company>CJenkins Insurance</company>
<street>Insurance150 S State Stree</street>
<city>Linkend</city>
<phone>(773) 561-4331</phone>
</agent>
</agents>
我必须打印id 1的xml记录,我在这里写了代码
<?php
$xml = simplexml_load_file("note.xml") or die("Error: Cannot create object");
foreach($xml->xpath('//agent') as $item) {
$row = simplexml_load_string($item->asXML());
$v = $row->xpath('//id[. ="1"]');
if($v[0]){
print $item->id;
print $item->image;
print $item->name;
print $item->company;
print $item->street;
print $item->city;
print $item->phone;
}
else{
echo 'No records';
}
?>
请建议我在哪里错了
答案 0 :(得分:1)
您不需要调用$item->asXML()
,因为$item
已经是SimpleXML对象。而且您不必遍历数组,因为您可以直接查询必要的代理。试试这个:
<?php
$xml = simplexml_load_file("note.xml") or die("Error: Cannot create object");
$agent = $xml->xpath('//agent[id=1]');
if (!empty($agent)) {
$item = $agent[0];
print $item->id;
print $item->image;
print $item->name;
print $item->company;
print $item->street;
print $item->city;
print $item->phone;
} else {
echo 'No records';
}
答案 1 :(得分:1)
首先,您缺少foreach
循环的结束括号。
其次,您可以使用xPath本身来完成此操作。
看看这段代码:
<pre><?php
$xml = simplexml_load_file("note.xml") or die("Error: Cannot create object");
$item = $xml->xpath('//agents/agent[id=1]')[0];
if($item!=null){
print_r($item);
}else{
echo "No Records";
}
?></pre>