0

SimpleXMLを使用してリモートXMLをロードしています

私のPHPコードは以下のようになります

$xml = simplexml_load_file('http://www.abc.om/xml.php');

foreach( $xml as $Product )
    {
        echo 'ProductCode: '.$Product->ProductCode.'<br />';
        echo 'ProductName: '.$Product->ProductName.'<br />';

    } 

私のXMLは以下のようになります

<All_Products>
<Product>
<ProductCode>9978H</ProductCode>
<ProductName>abc with Buckle in aBlack</ProductName>
<StockStatus>2</StockStatus>
</Product>
</All_Products>

商品が多いので商品タグを繰り返します

そのXMLフィードを読んだ後、XMLフィードは <StockStatus>、タグの前にあるいくつかの修正とともに表示されるはずです。タグを追加する必要があります。

<ProductURL><ProductURL>

そのタグは次のように表示されます

<ProductURL>http://abc.com/abc with Buckle in aBlack-p/9978H.htm<ProductURL>

つまり、各ProductURLは次のように追加する必要があります

<ProductURL>http://abc.com/<ProductName>-p/<ProductCode>.htm<ProductURL>

表示する最終的なXMLは次のようになります

<All_Products>
<Product>
<ProductCode>9978H</ProductCode>
<ProductName>abc with Buckle in aBlack</ProductName>
<ProductURL>http://abc.com/abc with Buckle in aBlack-p/9978H.htm<ProductURL>
<StockStatus>2</StockStatus>
</Product>
</All_Products>

だから私の質問は

1)foreach($ xml as $ Product)ループ内のProductタグのすべての要素を読み取ってから、ProductURL要素を追加する必要がありますか、それともそれを行うためのショートカットがありますか?

2)このデータの準備ができたら、XML形式でデータを再度表示するにはどうすればよいですか?

4

1 に答える 1

1

SimpleXMLでDOMを使用できます。

これがあなたがすべきことです:

  1. xpath()を使用して、すべてのProductタグを選択するxpathクエリを実行します。SimpleXMLElementこれにより、各Productタグを表すsの配列が返されます。

  2. もう一度xpath()を使用して、各ProductタグからProductCodeとを選択しProductName、その内容を取得します。URLを作成し、変数に保存します。

  3. xpath()を使用してStockStatusタグを選択します。

  4. DOMのdom_import_simplexml()SimpleXMLElement StockStatusを使用して、タグをに変換しますDOMElement

  5. ProductURLDOMのcreateElement()を使用して要素を作成し、前に作成したURLを挿入します。

  6. StockStatusDOMのinsertBefore()を使用する前に挿入してください。

この質問は、への変換を行い、DOMElement最後に挿入を行う方法を示しているはずです。

于 2012-07-14T09:42:21.757 に答える