使用PHP DOM-XML创建和解析XML文件

  <?php
  /**
  *Topic:Create and parse XML files using PHP DOM-XML
  *Source:http://www.php.net/domxml
  *Reference:http://www.zugeschaut-und-mitgebaut.de/php/extension.domxml.html
  *Author:urs circle.ch,16-1-2001
  *
  */
  //使用PHP DOM-XML创建和解析XML文件
  //创建XML文档对象;以后的处理过程将在此基础上进行
  $doc=new_xmldoc("1.0");
  //创建根节点,并设置一个属性
  $root=$doc->add_root("faq");
  $root->setattr("page","32");
  //子节点
  $one=$root->new_child("question","");
  //为子节点设置属性
  $one->setattr("number","1");
  //question也创建子节点,并且给它赋值
  $one->new_child("text","1.Where to get libxml-2.0.0?");
  $one->new_child("answer","You can download the latest
  release of libxml either as a source archive or
  RPM package from http://www.xmlsoft.org.
  The current version is libxml2-2.2.1.");
  $two=$root->new_child("question","");
  $two->setattr("number","2");
  $two->new_child("text","2.How to configure PHP4?");
  //创建一个不直接赋值的节点
  $twoone=$two->new_child("answer","");
  //然后给它单独赋值
  $twoone->set_content("DIR is the libxml install directory
  (if you just use--with-dom it defaults
  to/usr),I needed to use--with-dom=/usr/local");
  $three=$root->new_child("question","");
  $three->setattr("number","7");
  $three->new_child("text","7.How to use DOM XML function?");
  $three->new_child("answer","Read this document source for
  a simple example.");
  //输出到Browser
  print("<pre>".htmlspecialchars($doc->dumpmem())."</pre>");
  //write to file
  //写回到文件
  $fp=fopen("test_dom.xml","w+");
  fwrite($fp,$doc->dumpmem(),strlen($doc->dumpmem()));
  fclose($fp);
  //------------------------------------------------------
  //现在使用xpath从XML文档中得到内容
  $doc=xmldoc(join("",file("test_dom.xml")));
  $ctx=xpath_new_context($doc);
  //所有对象
  $foo=xpath_eval($ctx,"//child::*");
  print_r($foo);
  print("<br/><br/>");
  //text node对象
  $foo=xpath_eval($ctx,"//text");
  print_r($foo);
  print("<br/><br/>");
  //第一个text node对象
  $foo=xpath_eval($ctx,"//text[1]");
  print_r($foo);
  print("<br/><br/>");
  //第二个text node对象
  $foo=xpath_eval($ctx,"//text[2]");
  print_r($foo);
  print("<br/><br/>");
  //第三个answer对象
  $foo=xpath_eval($ctx,"//answer[3]");
  print_r($foo);
  print("<br/><br/>");
  //第三个text node的类型,名称和内容
  $foo=xpath_eval($ctx,"//text[3]");
  $tmp=$foo->nodeset;
  print_r($tmp);
  print("<br/>");
  print($tmp[0]->type).";";
  print($tmp[0]->name).";";
  print($tmp[0]->content);
  ?>
  需要说明,PHP DOM只能在PHP PHP4.0.x+linux上运行