js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码

复制代码 代码如下:

  <?php

  /*

  <?xml version="1.0" encoding="utf-8"?>

  <article>

  <item>

  <title name="t1"></title>

  <content>content1</content>

  <pubdate>2009-10-11</pubdate>

  </item>

  <item>

  <title name="t2">title2</title>

  <content>content2</content>

  <pubdate>2009-11-11</pubdate>

  </item>

  </article>

  */

  /*

  使用DOM复制(克隆)指定节点名数据到新的XML文件中 ,用到三个类的相关知识点 : DOMDocument - DOMNodeList - DOMNode

  1.DOMNodeList DOMDocument::getElementsByTagName ( string $name )

  2.DOMNode DOMNodelist::item ( int $index )

  3.DOMNode DOMNode::cloneNode ([ bool $deep ] )

  */

  if(!function_exists('l')) {

  function l() {

  echo '<br />********************************<br />';

  }

  }

  if(!function_exists('cp_xml')) {

  /*

  * 复制指定节点元素信息到新XML文件中

  * @param $dom : 源XML文件的DOM对象

  * @param $newdom : 新XML文件的DOM对象

  * @param $node: 指定复制的节点元素名

  * @param $file: 新生成的XML文件名

  * @param $attribute: 指定复制的节点元素的属性名

  * @return void

  */

  function cp_xml($dom,$newdom,$node,$file,$attribute = '') {

  $contents = $dom->getElementsByTagName($node);

  $clone = array();

  $attr = array();

  for($i = 0 ; $i<$contents->length; $i++) {

  $node = $contents->item($i);

  if($node->hasAttributes() && !empty($attribute)) {

  $attr[] = $node->getAttribute($attribute);

  }

  $clone[] = $node->cloneNode(true);

  }

  var_dump($attr);

  $root = $newdom->createElement('root');

  $newdom->appendChild($root);

  for($i = 0 ; $i<count($clone); $i++) {

  $title = $newdom->createElement($clone[$i]->nodeName,$clone[$i]->nodeValue);

  $root->appendChild($title);

  if(count($attr)>0 && !empty($attribute)) {

  //创建属性名

  $aname = $newdom->createAttribute($attribute);

  $title->appendChild($aname);

  //传递属性值

  $aval = $newdom->createTextNode($attr[$i]);

  $aname->appendChild($aval);

  }

  }

  $newdom->save($file);

  }

  }

  if(file_exists("test10_12.xml")) {

  //实例一

  $dom = new DOMDocument();

  $newdom = new DOMDocument('1.0','utf-8');

  $dom->load("test10_12.xml");

  $node = 'content';

  $file = '11_1.xml';

  cp_xml($dom,$newdom,$node,$file);

  //实例二

  $dom = new DOMDocument();

  $newdom = new DOMDocument('1.0','utf-8');

  $dom->load("test10_12.xml");

  $node = 'title';

  $file = '11_2.xml';

  cp_xml($dom,$newdom,$node,$file,$attribute = 'name');

  }

  ?>