0

simplexml を使用して、php を介して XML の形式で API URL をロードしています。このProductDescription要素には、保証セクションに追加したい html が含まれています。LASTタグの前に要素を追加<li>Valid in US</li>したいと思います。ProductDescription</ul>

    <xmldata>
      <Products>
        <ProductCode>ACODE</ProductCode>
        <ProductID>1234</ProductID>
        <ProductName>PRODUCTTITLE</ProductName>
        <ProductDescription>
           <h1>Stuff</h1><p>description</p><hr /><strong>Features &amp; Benefits</strong>
           <ul><li>feat</li><li>feat</li><li>feat</li></ul><hr /><strong>Specifications</strong><ul><li>spec</li><li>spec</li><li>spec</li></ul> <hr /><strong>Warranty Information for a certain product</strong>
           <ul><li>3 Years Parts</li><li>3 Years Labor</li></ul><div> <a href="/ahref" target="_blank">See more products from MFG </a></div>
        </ProductDescription>
        <ProductManufacturer>MFG</ProductManufacturer>
      </Products>
    </xmldata>

今できることは、ProductDescription から生のコードを取得することだけです。投稿または表示する前に、そのlistタグを最後のタグの末尾に追加する方法を知る必要があります。ulここに私の部分的なphpがあります:

     foreach( $xml as $NEW_XML ) 
        {          
            $code = $NEW_XML->ProductCode;
            $name = $NEW_XML->ProductName;
            $desc = $NEW_XML->ProductDescription; 
            $mfg = $NEW_XML->ProductManufacturer;
echo "<textarea rows='13' cols='64' name='DESC' />" . $desc. "</textarea>"; }

REGex を使用する必要がないことを願っています (誰かが方法を知らない限り)。私の最初の考えは、それをに入れ<textarea>、単純にxmlに投稿することですが、.xmlとして直接保存する方法があれば、より効率的です。

4

1 に答える 1

1

の数ulがわかっている場合は、次のように情報を追加できます。

$NEW_XML->ProductDescription->ul[2]->addChild('li', 'Valid in US');

これは、それが-Element$NEW_XMLを指していることを前提としています。常に最後を取得するには、Products最初にカウントする必要があります。ul

$desc = $NEW_XML->ProductDescription;
$count = count($desc->ul);
$desc->ul[$count - 1]->addChild('li', 'Valid in US');

その後、出力または保存できます$xml->asXML()

更新

最後のコメントからの私の仮定に従って更新された、使用した完全なコードを次に示します。これが役立つ場合があります。

<?php
$xmldata = <<<ENDXML
<xmldata>
      <Products>
        <Product>
            <ProductCode>ACODE</ProductCode>
            <ProductID>1234</ProductID>
            <ProductName>PRODUCTTITLE</ProductName>
            <ProductDescription>
               <h1>Stuff</h1><p>description</p><hr /><strong>Features &amp; Benefits</strong>
               <ul><li>feat</li><li>feat</li><li>feat</li></ul><hr />    <strong>Specifications</strong><ul><li>spec</li><li>spec</li><li>spec</li></ul> <hr /><strong>Warranty Information for a certain product</strong>
               <ul><li>3 Years Parts</li><li>3 Years Labor</li></ul><div> <a href="/ahref" target="_blank">See more products from MFG </a></div>
            </ProductDescription>
            <ProductManufacturer>MFG</ProductManufacturer>
        </Product>
        <Product>
            <ProductCode>ANOTHERCODE</ProductCode>
            <ProductID>98765</ProductID>
            <ProductName>PRODUCTTITLE 2</ProductName>
            <ProductDescription>
               <h1>Stuff</h1><p>description</p><hr /><strong>Features &amp; Benefits</strong>
               <ul><li>feat</li><li>feat</li><li>feat</li></ul><hr /> <strong>Specifications</strong><ul><li>spec</li><li>spec</li><li>spec</li></ul> <hr /> <strong>Warranty Information for a certain product</strong>
               <ul><li>3 Years Parts</li><li>3 Years Labor</li></ul><div> <a href="/ahref" target="_blank">See more products from MFG </a></div>
            </ProductDescription>
            <ProductManufacturer>MFG</ProductManufacturer>
        </Product>
    </Products>
</xmldata>
ENDXML;

$xml = simplexml_load_string($xmldata);

foreach ($xml->Products->Product as $product) {
    $description = $product->ProductDescription;
    $count = count($description->ul);
    $description->ul[$count-1]->addChild('li', 'Valid in US');
}

echo $xml->asXML();
于 2012-04-27T19:58:17.303 に答える