使用 PHP 读取多级 XML(简单 XML)
Reading multilevel XML with PHP (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 (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(https://www.w3schools.com/php/php_xml_simplexml_get.asp) 上,我知道我的 XML 更复杂,但我什至无法获得第一个 URL =25=]。我认为循环通过右子节点,因为它在输出中写入 BREAK 两次。有人知道我哪里出错了吗?
如果我的问题很愚蠢,我真的很抱歉,我还在学习如何编码。
感谢大家的帮助,祝大家度过愉快的一天:D
哦,我现在的代码:
<?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()
有用
要访问更多元素,下面是一个示例:
<?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";
}
如果您在循环中添加 print_r($p);
,那么您将看到数据结构并能够按照我的示例访问您需要的其他元素。
我正在努力处理 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(https://www.w3schools.com/php/php_xml_simplexml_get.asp) 上,我知道我的 XML 更复杂,但我什至无法获得第一个 URL =25=]。我认为循环通过右子节点,因为它在输出中写入 BREAK 两次。有人知道我哪里出错了吗?
如果我的问题很愚蠢,我真的很抱歉,我还在学习如何编码。
感谢大家的帮助,祝大家度过愉快的一天:D
哦,我现在的代码:
<?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()
有用
要访问更多元素,下面是一个示例:
<?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";
}
如果您在循环中添加 print_r($p);
,那么您将看到数据结构并能够按照我的示例访问您需要的其他元素。