0

次のような XML ファイルがあります。

<?xml version="1.0" encoding="ISO-8859-1"?>
<products>
  <product sku="CATDJ" type="CAT" vendor="DJ" active="1" on_sale="0" discountable="0">
    <name>CATALOGS</name>
    <short_description><![CDATA[The DJ catalog features 182 pages]]></short_description>
    <long_description><![CDATA[The DJ catalog features 182 pages.]]></long_description>
    <price>1.5</price>
    <stock_quantity>65</stock_quantity>
    <release_date>2003-05-06T00:00:00-04:00</release_date>
    <barcode>782421791315</barcode>
  </product>
  ....

価格、stock_quatity、バーコードは取得できますが、sku、有効または割引可能なデータは取得できません。

これは私のコードが次のように見えるものです:

   $myinv = simplexml_load_file('http://www.*******.com/products.xml');
   foreach ($myinv as $invinfo):
     $sku = $invinfo->products->product->sku;
     $active = $invinfo->products->product->active;
     $deductible = $invinfo->products->product->discountable;
     $qty=$invinfo->stock_quantity;
     $price=$invinfo->price;
     $upc=$invinfo->barcode;

私は何を間違っていますか?ところで、私はphpが初めてです。

ご協力ありがとうございました。

4

2 に答える 2

1

SimpleXMLは常にSimpleXMLElementを返すため、SimpleXMLから取得したものはすべて型キャストします。var_dump自分で確認する変数。

<?php

$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>
<products>
  <product sku="CATDJ" type="CAT" vendor="DJ" active="1" on_sale="0" discountable="0">
    <name>CATALOGS</name>
    <short_description><![CDATA[The DJ catalog features 182 pages]]></short_description>
    <long_description><![CDATA[The DJ catalog features 182 pages.]]></long_description>
    <price>1.5</price>
    <stock_quantity>65</stock_quantity>
    <release_date>2003-05-06T00:00:00-04:00</release_date>
    <barcode>782421791315</barcode>
  </product>
</products>';

$myinv = new SimpleXMLElement($xml);

$products = $myinv->product;
foreach ($products as $product){

    $attrs = $product->attributes();
    $sku = $attrs->sku;
    $active = $attrs->active;
    $discountable = $attrs->discountable;
    $qty = $product->stock_quantity;
    $price = $product->price;
    $upc = $product->barcode;

    echo (string)$sku . "<br>\n";
    echo (string)$active . "<br>\n";
    echo (string)$discountable . "<br>\n";
    echo (string)$qty . "<br>\n";
    echo (string)$price . "<br>\n";
    echo (string)$upc . "<br>\n";
}
?>
于 2013-02-04T20:15:30.390 に答える
0

XPathは、。を使用して属性の値を取得する役割を果たします$xpath->query("//product[@name='sku']/@value");

于 2013-02-04T20:15:09.593 に答える