查找选定的XML节点的子节点

时间:2017-12-15 08:28:04

标签: php xml

我想通过php的XML选择的id节点找到库存计数。你能帮我更新我的代码吗? (例如,我想获得id = 122的股票数量)

$myproduct=<<<XML
<product>
<id>121</id>
<name>product 1</name>
<stock>14</stock>
</product>

<product>
<id>122</id>
<name>product 2</name>
<stock>8</stock>
</product>

<product>
<id>123</id>
<name>product 3</name>
<stock>26</stock>
</product>
XML;

$xml=simplexml_load_string($myproduct);
print_r($xml->stock);

1 个答案:

答案 0 :(得分:0)

您的xml无效,因为它包含多个根节点<product>

例如,如果您的root是<products>,则可以使用foreach循环遍历$xml->product

循环中的变量$product的类型为SimpleXMLElement,您可以将其强制转换为字符串以获取值。

$myproduct=<<<XML
<products>
    <product>
        <id>121</id>
        <name>product 1</name>
        <stock>14</stock>
    </product>
    <product>
        <id>122</id>
        <name>product 2</name>
        <stock>8</stock>
    </product>
    <product>
        <id>123</id>
        <name>product 3</name>
        <stock>26</stock>
    </product>
</products>
XML;

$xml=simplexml_load_string($myproduct);

foreach($xml->product as $product) {
    if ((string)$product->id === "122") {
        echo $product->stock;
    }
}

或使用xpath表达式:

$product = $xml->xpath("/products/product[id='122']");
echo $product[0]->stock;

那会给你:

  

8