如何使用php获取xml中父标记的子标记的内容

时间:2017-07-28 19:51:19

标签: php xml

我正在尝试获取另一个标记内的标记内容以及特定ID标记。源代码是以下xml响应:

Xml响应在这里

<PricePlans>
    <PricePlan>
        <Description>Check Email</Description>
        <ID>1</ID>
        <Price>2</Price>
        <Time>900</Time>
    </PricePlan>
    <PricePlan>
        <Description>High Speed</Description>
        <ID>2</ID>
        <Price>5</Price>
        <Time>3600</Time>
    </PricePlan>
</PricePlans>

我的php代码在这里:

echo "Desc" ." ".$xml->PricePlan->Description ."</br>";

此代码为我提供了第一个“描述”标签(检查电子邮件)的内容,但我想要一个带有特定“ID”标签的价格计划的描述(例如ID 2 - “高速”) xml响应可能包含更多“PricePlan”标记,但每个标记在“ID”标记中都有唯一值。

2 个答案:

答案 0 :(得分:1)

您可以像访问数组一样访问它们:

echo($xml->PricePlan[0]->Description);
//Check Email
echo($xml->PricePlan[1]->Description);
//High Speed

foreach ($xml->PricePlan as $pricePlan) {
    echo($pricePlan->Description);
}
//Check Email
//High Speed

如果您需要在ID中按值找到元素,可以使用xpath:

$el = $xml->xpath('/PricePlans/PricePlan/ID[text()=2]/..');

答案 1 :(得分:1)

要获取具有特定ID的元素的描述,您可以使用xpath。

$id = 2;

// xpath method always returns an array even when it matches only one element,
// so if ID is unique you can always take the 0 element
$description = $xml->xpath("/PricePlans/PricePlan/ID[text()='$id']/../Description")[0];

echo $description; // this echoes "High Speed"