PHP使用PHPSimpleXML从XML获取数据
我试图从xml文件中获取数据,但遇到了一些问题,因为该表的级别比我能找到的示例要多一些 我希望能够遍历PHP使用PHPSimpleXML从XML获取数据,php,xml,simplexml,Php,Xml,Simplexml,我试图从xml文件中获取数据,但遇到了一些问题,因为该表的级别比我能找到的示例要多一些 我希望能够遍历的每个实例,因为和只打开和关闭数据。根据记录的事件数重复 表格结构的一个示例是: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <Information> <Events> <Event>
的每个实例,因为
和
只打开和关闭数据。
根据记录的事件数重复
表格结构的一个示例是:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Information>
<Events>
<Event>
<Time>3141.29</Time>
<PrimaryObject ID="487">
<Name>Player1</Name>
<Country>us</Country>
</PrimaryObject>
<Action>Move</Action>
<SecondaryObject ID="814">
<Name>Dog</Name>
<Parent>487</Parent>
</SecondaryObject>
</Event>
</Events>
</Information>
3141.29
玩家1
我们
移动
狗
487
PHP代码是:
<!DOCTYPE html>
<html>
<body>
<?php
$xml=simplexml_load_file("data.xml") or die("Error: Cannot create object");
foreach($xml->Event as $events) {
$id = $events->PrimaryObject->attributes();
$name = $events->PrimaryObject->Name;
...
echo $id['ID'].' '. $name;
echo "<br>";
}
?>
</body>
</html>
事件作为$events){
$id=$events->PrimaryObject->attributes();
$name=$events->PrimaryObject->name;
...
echo$id['id'].'.$name;
回声“
”;
}
?>
我不确定您到底在寻找什么数据,但以下是使用xpath的所有内容,您可以选择:
$events = $xml->xpath('.//Event');
foreach($events as $event) {
$dat = $event->xpath('./PrimaryObject')[0];
$time= $event->xpath('./Time');
$id = $dat->xpath('./@ID');
$name = $dat->xpath('./Name');
$country = $dat->xpath('./Country');
$dat2 = $event->xpath('./SecondaryObject')[0];
$action= $event->xpath('./Action');
$id2 = $dat2->xpath('./@ID');
$name2 = $dat2->xpath('./Name');
$parent = $dat2->xpath('./Parent');
echo 'Time: ' . $time[0];
echo "<br>";
echo 'Action: ' . $action[0];
echo "<br>";
echo "<br>";
echo 'Primary Object Data:';
echo "<br>";
echo 'ID: ' . $id[0];
echo "<br>";
echo 'Name: ' . $name[0];
echo "<br>";
echo 'Country: ' . $country[0];
echo "<br>";
echo "<br>";
echo "<br>";
echo 'Secondary Object Data:';
echo "<br>";
echo 'ID: ' . $id2[0];
echo "<br>";
echo 'Name: ' . $name2[0];
echo "<br>";
echo 'Parent: ' . $parent[0];
echo "<br>";
}
你必须使用事件
比如说
$xml=simplexml_load_file("data.xml") or die("Error: Cannot create object");
foreach($xml->Events->Event as $events) {
$id = $events->PrimaryObject->attributes();
$name = $events->PrimaryObject->Name;
echo $id['ID'].' '. $name;
echo "<br>";
}
作为一个额外提示,您实际上不需要
->attributes()
在这里,您只需执行$id=$events->PrimaryObject['id']
,或者$id=(string)$events->PrimaryObject['id']
,如果您在其他地方传递它,并且只需要值,而不是表示属性的对象。
$xml->Events->Event as $events
$xml=simplexml_load_file("data.xml") or die("Error: Cannot create object");
foreach($xml->Events->Event as $events) {
$id = $events->PrimaryObject->attributes();
$name = $events->PrimaryObject->Name;
echo $id['ID'].' '. $name;
echo "<br>";
}
487 Player1