使用PHP(SimpleXML)读取多级XML

使用PHP(SimpleXML)读取多级XML,php,xml,simplexml,Php,Xml,Simplexml,我正在努力使用PHP代码来读取以下XML文件: <putovanja agencija="Kompas Zagreb d.d."> <putovanje url="http://www.kompas.hr/Packages/Package.aspx?idPackage=3151" tip="Krstarenja Jadranom" destinacija="Krstarenja" naziv="Mini Krstarenje Jadranom Zadar-Opatija (

我正在努力使用PHP代码来读取以下XML文件:

<putovanja agencija="Kompas Zagreb d.d.">
  <putovanje url="http://www.kompas.hr/Packages/Package.aspx?idPackage=3151" tip="Krstarenja Jadranom" destinacija="Krstarenja" naziv="Mini Krstarenje Jadranom Zadar-Opatija (5 noći, jedan smjer) " id="3151" polazak="Zadar (Krstarenje)">
    <ukrcaji>
      <ukrcaj>Zadar</ukrcaj>
    </ukrcaji>
    <datumiIcijene>
      <data od="28.08.2017" do="02.09.2017" cijena="3695"/>
      <data od="04.09.2017" do="09.09.2017" cijena="3360"/>
      <data od="11.09.2017" do="16.09.2017" cijena="3360"/>
    </datumiIcijene>
  </putovanje>
  <putovanje url="http://www.kompas.hr/Packages/Package.aspx?idPackage=3151" tip="Odmor" destinacija="Krstarenja" naziv="Mini Krstarenje Jadranom Zadar-Opatija (5 noći, jedan smjer) " id="3151" polazak="Zadar (Krstarenje)">
    <ukrcaji>
      <ukrcaj>Zadar</ukrcaj>
    </ukrcaji>
    <datumiIcijene>
      <data od="28.08.2017" do="02.09.2017" cijena="3695"/>
      <data od="04.09.2017" do="09.09.2017" cijena="3360"/>
    </datumiIcijene>
  </putovanje>
</putovanja>

扎达尔
扎达尔
我在网上找到了示例,特别是在w3schools()上,我知道我的XML更复杂,但我甚至无法获得第一个“CHILD”的URL。我认为循环通过正确的子循环,因为它在输出中写入了两次中断。有人知道我哪里出错了吗

如果我的问题很愚蠢,我真的很抱歉,我还在学习如何编码

谢谢你们的帮助,祝你们度过愉快的一天

哦,我现在的代码是:

<?php
$xml=simplexml_load_file("putovanja.xml") or die("Error: Cannot create object");
foreach($xml->children() as $putovanja) {
    echo $putovanja->putovanje['url'];
    echo "Break <br>";
}
?>

以下是访问URL的方法:

$xml=simplexml_load_file("putovanja.xml") or die("Error: Cannot create object");

foreach($xml->putovanje as $p) {
    echo $p->attributes()->url;
    echo "\n";
}
您不需要
children()
,您会发现
attributes()
很有用

要访问更多元素,请参见以下示例:


<代码>只是一个愚蠢的问题,你会考虑切换到JSON字符串吗?使用它要简单得多。您可以使用单个php函数来获取易于遍历的assoc数组。如果这对你的项目来说是不可接受的,那么忽略这一点。你的意思是使用json而不是XML?它必须是XML,不能影响源文件。好的,我不知道你的项目的范围。如果您只是试图创建一个配置文件,或者如果您必须读取现有的源文件,那么Laurent就快到了。请注意,
$xml
变量表示
元素。您正在循环它的子元素(
元素),这很好。然后您错误地尝试访问每个元素的子元素,而子元素不存在。如果您将
$putovanja
重命名为
$putovanje
,则
echo$putovanje['url']你会在那里。是的,也许我应该更好地指定它,谢谢你的评论谢谢你的回答,然后我想如果我在当前循环中做另一个循环,我可以更深一层?是的,你具体想从XML文件中提取什么?让我知道,我可以更新我的答案诚实地说,一切,作业希望所有的数据都在表中。因此,所有属性“ukrcaj”和“Datumicijene”/DATA.OK的属性都已更新。这应该有助于你开始是的,非常感谢:)我欠你一杯啤酒
<?php
$xml=simplexml_load_file("putovanja.xml") or die("Error: Cannot create object");

foreach($xml->putovanje as $p) {
    echo $p->attributes()->url;
    echo "\n";
    echo $p->ukrcaji->ukrcaj;    
    echo "\n";    
    echo $p->datumiIcijene->data[0]->attributes()->od;           
    echo "\n\n";
}