gpt4 book ai didi

php - 如何获取非常具体的 XML 元素的值...?

转载 作者:行者123 更新时间:2023-12-01 23:05:47 25 4
gpt4 key购买 nike

假设我在名为 data.xml 的文件中有这个:

<?xml version="1.0"?>    
<stats>
<data1>lorem</data1>
<data2>ipsum</data2>
<source mount="/mno">
<thing>1.0</thing>
<somethingelse>10</somethingelse>
<important>12345</important>
<more>word</more>
</source>
<source mount="/pqr">
<thing>1.0</thing>
<somethingelse>10</somethingelse>
<important>23456</important>
<more>word</more>
</source>
<source mount="/stu">
<thing>1.0</thing>
<somethingelse>10</somethingelse>
<important>34567</important>
<more>word</more>
</source>
<source mount="/vwx">
<thing>1.0</thing>
<somethingelse>10</somethingelse>
<important>45678</important>
<more>word</more>
</source>
</stats>

我现在需要提取 <important> 下的具体元素 <source mount="/stu"> 的内容,并将其显示在网页上。我发现我可以这样做:

<?php
$xml=simplexml_load_file("data.xml") or die("Error: Cannot create object");
echo $xml->source[3]->important;
?>

这确实有效。我在这里所做的是转到第三个 <source>,它恰好是我需要的。然而...... XML 的内容可能(并且将会)发生变化,当这种情况发生时,<source mount="/stu"> 可能不再是第三个,这意味着输出将不再是我在这里需要的特定元素的输出。

如何让它始终显示来自特定 <important><source mount="/stu"> 的内容,即使 XML 中的项目数量发生变化?

我被告知 XPATH 可能是可行的方法,但编码不是我的职业,我发现很难理解......我还在 StackOverflow 上研究了其他一些与 XML 相关的问题,但是我的新手大脑不明白如何将这些应用到我的情况中。所以这里欢迎任何建议。 XPATH 确实是个好主意吗?如果是这样,我如何在这里实现/使用它。或者还有其他/更好的方法吗?

非常感谢。

最佳答案

一种方法是,您可以遍历所有 $xml->source 并在值是 important 时退出循环,就像使用 foreach 循环一样:

<?php
$xml=simplexml_load_file("data.xml") or die("Error: Cannot create object");
foreach($xml->source as $source){
if($source['mount'] == '/stu'){
echo $source->important;
break;
}
}
?>

关于php - 如何获取非常具体的 XML 元素的值...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70915114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com