gpt4 book ai didi

php - XPATH检查当前节点的单个属性,然后返回许多属性

转载 作者:行者123 更新时间:2023-12-03 17:32:58 25 4
gpt4 key购买 nike

我想搜索XML数据并仅返回一些符合我的条件的节点。我当前测试中的大多数代码都来自此站点,但是我很难用最干净的方式编写它。

我知道XPATH将是最有效的,这是我的数据和示例代码。

数据提供如下:

<pre>
<Performances>
<Performance
performance_id="100042434"
business_date="08232015"
show_datetime="1335"
reserved_seating="0"
auditorium_layout_id="0"
performance_number="37654"
ticket_price_scheme_index="13"
auditorium_index="12"
stadium_seat_flag="0"
dolby_sound_flag="0"
dts_sound_flag="0"
thx_sound_flag="0"
performance_status_code="0"
atm_purchase_flag="1"
remote_purchase_flag="1"
allow_pass_flag="1"
disallow_discount_flag="0"
special_engagement_flag="0"
feature_code="1502 "
extended_performance_status_code="O"
/>
</Performances>
</pre>


性能是我需要检查的要素...几百个。

我的代码是

$XML = simplexml_load_file("BoxOfcXML.326") or die("Error: Cannot create object");

$XMLResults = $XML->xpath('/BoxOfc/Performances/Performance');
foreach($XMLResults as $Result) {
$Aud = $Result->xpath('//Attribute[@name="auditorium_index"]');

if($Aud) {
// because we have a list of elements even if there's one result
$attributes = $Aud[0]->attributes();
$AudID = $attributes['value'];
}
else {
// No Author
}
}


但是我知道XPath是不正确的。我尝试了不同级别的// s等,但是我知道我使用错了。

我可以使用以下代码获取并比较所需的数据。但是,如果我使用此方法,则由于我的代码无效,一旦满足条件,我将不得不在同一节点上重新运行循环。如果我只想检查日期,那会很好。但是我需要检查日期,剧院ID,然后返回更多元素。

foreach ($perfID->attributes() as $a => $b) {
if ($a == 'business_date') {
//collect data we need from each att
//set flag if date is today
//spit it out at the end -
if ($b == $today) { echo $b . "<br><br>"; }
}
}


======编辑=======
这是可以满足我需要的工作代码。我只需要假设有一种更清洁的方法可以做到这一点。

$today = date("mdY");
$XML = simplexml_load_file("BoxOfcXML.326") or die("Error: Cannot create object");
$XMLResults = $XML->xpath('/BoxOfc/Performances/Performance');
foreach($XMLResults as $Result) {
$Details = $Result; //Duplicate it in order to nest the details loop
foreach ($Result->attributes() as $a => $b) {
if ($a == 'business_date') {
if ($b == $today) {

foreach ($Details->attributes() as $a => $b) {
switch ($a) {
case "business_date":
echo "$a $b <br>";
break;
case "show_datetime":
echo "$a $b <br>";
break;
case "auditorium_index":
echo "$a $b <br>";
break;
case "feature_code":
echo "$a $b<br><br>";
break;

}

}
}
}
}

}

最佳答案

关于php - XPATH检查当前节点的单个属性,然后返回许多属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31666570/

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