2017-01-10 6 views
0

の属性値は、次のXML文書を考えてみましょう:エコーXML要素の値と配列

<?xml version="1.0" encoding="UTF-8"?> 
<catalog> 
    <product code="WERGTR"> 
    </product> 
    <product code="HERGGFH"> 
    </product> 
    <product code="NYTERBT"> 
    </product> 
    <product code="NUYRTHT"> 
    </product> 
    <misc> 
     <copyrightHTML>Somo stuff</copyrightHTML> 
     <categoryLink name="Attr1">http://www.example.com/val1</categoryLink> 
     <categoryLink name="Attr2">http://www.example.com/val2</categoryLink> 
     <categoryLink name="Attr3">http://www.example.com/val3</categoryLink> 
     <categoryLink name="Attr4">http://www.example.com/val4</categoryLink> 
    </misc> 
</catalog> 

は、どのように私は、各<categoryLink>要素をエコーすることができますか?その値と属性nameの値を表示していますか?

私は

$pricesDatabase = "http://www.example.com/database.xml"; 
$xml = simplexml_load_file($pricesDatabase) or die("Couldn't create database.xml"); 

foreach($xml->children() as $links) { 
    echo $links->categoryLink['name']; 
    echo "<br>"; 
} 

を使用してみましたが、動作しません、それは単に何も表示されません。

私が探している結果は以下のように考えられます。

$key . ": value: " . $value . ", name: " . $nameValue 

そう...

[0]: value: http://www.example.com/val1, name: Attr1 
[1]: value: http://www.example.com/val2, name: Attr2 
[2]: value: http://www.example.com/val3, name: Attr3 
[3]: value: http://www.example.com/val4, name: Attr4 

答えて

1

実際に出力される。

<br><br><br><br>Attr1<br> 

$xmlは、文書要素ノードcatalogに関連付けられています。その子はproductmiscになります。最初の4つの '
'はproductノードからのもので、最後はその他のノードです。最初のcategoryLink子とその属性nameにアクセスしています。

foreach($xml->misc->categoryLink as $link) { 
    echo $link['name'], ', ', $link; 
    echo "\n"; 
} 

またはXPathを使用:

にSimpleXMLElementオブジェクトは、それらがどのように使用されるかによって異なる振る舞い

foreach($xml->xpath('misc/categoryLink') as $link) { 
    echo $link['name'], ', ', $link; 
    echo "\n"; 
} 
、あなたは、同じ名前を持つ複数のノードを反復処理し、リストの最初にアクセスしたり、文字列にキャストすることができますテキストコンテンツを取得します。

+0

ありがとうございました。私はコード/答えにいくつかの問題を抱えていて、あなたのものを試してみることにしました。完璧に働いた。 – alej27

0

私はどのように理解しました:

1.-ゲット各<categoryLink>要素の属性nameの値:

foreach($xml->xpath('//misc/categoryLink/@name') as $nameAttr) { 
    echo $nameAttr . "<br>"; 
} 

が2.-各<categoryLink>要素の値を取得:

foreach($xml->xpath('//misc/categoryLink') as $linkVal) { 
    echo $linkVal . "<br>"; 
} 

を欠点は、私がどのように出力に各行の両方の値を考え出したていないです。