2017-12-15 12 views
-1

私のXMLの選択したidノードで、在庫数をPHPで調べたいと思います。コードを更新する手助けをしてもらえますか?それは複数のルート・ノード<product>選択したXMLノードの子を見つけよう

例えば、あなたのルートが<products>ある場合は、foreachを使用することができますが含まれているため

$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); 
+0

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

あなたを与えるだろう。あなたの実際のコードまたは作業代表例を示してください。 – salathe

+0

xmlにルート要素がありません。実際にそのようなフラグメントを使用するには、 '$ xml = simplexml_load_string( ''。$ myproduct。 '');' – splash58

答えて

0

あなたのXMLが有効ではありません(例えば、私は、ID = 122の株式数を取得したいです) $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式を使った:あなたの `$のmyproduct`が有効なXMLドキュメントが含まれていません

+0

を追加します。それは8秒かかる:/ –

関連する問題