为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 使用 PHPSimpleXML 从 XML 获取数据

PHP 使用 PHPSimpleXML 从 XML 获取数据

PHP
浮云间 2023-08-19 17:42:08
我正在尝试从 xml 文件获取数据,但遇到了麻烦,因为该表的级别比我能找到的示例要多一些。我希望能够迭代<Event>as的每个实例<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>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>
查看完整描述

2 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

您必须使用事件


$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

PHP演示


查看完整回答
反对 回复 2023-08-19
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

我不确定您到底在寻找什么数据,但这里有所有内容,使用 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>";         

  }

输出:


Time: 3141.29

Action: Move


Primary Object Data:

ID: 487

Name: Player1

Country: us



Secondary Object Data:

ID: 814

Name: Dog

Parent: 487


查看完整回答
反对 回复 2023-08-19
  • 2 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信