php解析xml 以及动态创建xml实例

需要解析的xml
<?xml version="1.0" encoding="gbk"?>
<books>
  <book id="1">
    <name>XML完全探索</name>
    <price>63</price>
    <publishing>电子工业出版社</publishing>
  </book>
  <book id="2">
    <name>MySQL数据编程</name>
    <price>89</price>
    <publishing>清华大学出版社</publishing>
  </book>
  <book id="3">
    <name>PHP精典编程100例</name>
    <price>113</price>
    <publishing>人民邮电出版社</publishing>
  </book>
</books>
1.用php进行解析该xml文件:
 用到的php  API有:
 DOMDocument(([ string $version [, string $encoding ]] ):创建一个dom文档对象
 <?php
             $file = "books.xml";
             $xmldoc = new DOMDocument ( "1.0", "utf-8" );
             $xmldoc->load ( $file );//加载xml文件
             $bookEles = $xmldoc->getElementsByTagName ( "book" );//获取元素名为name的集合
            //for循环遍历$bookEles集合
             for($i = 0; $i < $bookEles->length; $i ++) { 
                  $bookEle = $bookEles->item ( $i );
                  $bid = $bookEle -> getAttribute("id");
                  $name = $bookEle -> getElementsByTagName("name") -> item(0) -> firstChild -> nodeValue;
                  echo("<p>" . $bid . ","  . $name . "</p>");
       }
 ?>
结果:
    1,XML完全探索

    2,MySQL数据编程

    3,PHP精典编程100例

2.用php进行动态的创建xml文件
 <?php
          // 创建dom文档对象
          $dom = new DOMDocument("1.0");

          // 创建一个根元素
          $root = $dom->createElement("toppings");
          $dom->appendChild($root);
          $dom->formatOutput=true;

          // 创建一个根元素的子元素
          $item = $dom->createElement("item");
          $root->appendChild($item);

          // 创建$item的子文本节点
          $text = $dom->createTextNode("pepperoni");
          $item->appendChild($text);

          // 创建属性节点
          $price = $dom->createAttribute("price");
          $item->appendChild($price);

         //创建属性节点的文本子节点
         $priceValue = $dom->createTextNode("4");
         $price->appendChild($priceValue);

         //创建CDATA选项
         $cdata = $dom->createCDATASection(" Customer requests that pizza be
         sliced into 16 square pieces ");
         $root->appendChild($cdata);

         // create PI
         $pi = $dom->createProcessingInstruction("pizza", "bake()");
         $root->appendChild($pi);

         // 保存到文件
         $dom->save("order.xml");

        //保存为一个字符串
        $order = $dom->save("order.xml");
?>

结果:
<?xml version="1.0"?>
<toppings>
 <item price="4">pepperoni</item>
 <![CDATA[ Customer requests that pizza be
         sliced into 16 square pieces ]]>
    <?pizza bake()?>
</toppings>

你可能感兴趣的:(PHP,xml,解析)