dongnong7524
dongnong7524
2011-07-06 18:23

PHP DOM:在XML数据中填充值

已采纳
$xml = new DOMDocument();
$xml_store_inventory = $xml->createElement('store-inventory');  // highest layer
$xml_item = $xml->createElement('item');
$xml_quantity = $xml->createElement('quantity');

$xml->appendChild($xml_store_inventory);
$xml_store_inventory->appendChild($xml_item);
$xml_location->appendChild($xml_quantity);

gives:

<?xml version="1.0"?>
<store-inventory>
  <item>
      <quantity></quantity>
  </item>
</store-inventory>

So, I managed to create the above in PHP using DOM. I've been searching online on how to "populate," but I'm not finding any information on how to do this.

More specifically, I'd like this to look like this

<?xml version="1.0" encoding="UTF-8"?>
<store-inventory
xmlns="http://..."
xmlns:xsi="http://..."
xsi:schemaLocation="http://...">

    <item item-id="abcd">
       <quantity>0</quantity>
    </item>
</store-inventory>

So, I'd like to add/change the following:

  1. change the XML version line to include encoding (scrape this, I figured out --> $xml = new DOMDocument('1.0', 'UTF-8');)
  2. Add additional information to an element. e.g. [item] to [item item-id="abcd"]
  3. Also [quantity] to [quantity]0[/quantity]

Can someone help me with this? TIA!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • dsa89029 dsa89029 10年前

    You're already pretty close.

    2: set an attribute:

    // set/add an attribute:
    $xml_item->setAttribute('item-id', "abcd");
    

    3: add data while adding a tag/element:

    // add an element with data:
    $xml_quantity = $xml->createElement('quantity', '0');
    

    2+: Use HTMLSpecialchars to prevent the browser to hide the tags:

    echo nl2br(html_specialchars($xml->saveXML(), ENT_QUOTES));
    
    点赞 评论 复制链接分享