求一个php dom xml节点移动的类子,就是用php dom控制一个已经生成的xml文件,将里面的节点上下移动,请各位大侠帮小弟解决下,给我个类子,注释多一点,谢谢,要是有已经可以用的类子可以发我邮箱里面[email protected],万分感谢!!!

解决方案 »

  1.   

    <?php
    $xml = <<<EOF
    <?xml version="1.0"?>
    <root>
      <parent>
        <child>foo1</child>
        <child>foo2</child>
        <child>foo3</child>
        <child>foo4</child>
      </parent>
    </root>
    EOF;$dom = new DomDocument('1.0', 'UTF-8');
    $dom->loadXML($xml);// 活动root节点
    $root = $dom->getElementsByTagName('root')->item(0);$parent = $root->getElementsByTagName('parent')->item(0);changeNode($parent, 'child', 1, 3);echo $dom->saveXML();function changeNode($parent, $node, $index1, $index2) {
    // 从上一级节点获取node节点
    $nodes = $parent->getElementsByTagName($node); // 分别找出2个节点的内容
    $node1 = $nodes->item($index1);
    $node2 = $nodes->item($index2); //创建临时节点
    $tmp1 = $node1->cloneNode(true);
    $tmp2 = $node2->cloneNode(true); // 替换相应的内容
    $parent->replaceChild($tmp2, $node1);
    $parent->replaceChild($tmp1, $node2);
    }
      

  2.   

    <?php
    $xml = <<<EOF
    <?xml version="1.0"?>
    <root>
      <parent>
        <child>foo1</child>
        <child>foo2</child>
        <child>foo3</child>
        <child>foo4</child>
      </parent>
    <parent>
        <child>foo5</child>
        <child>foo6</child>
        <child>foo7</child>
        <child>foo8</child>
      </parent></root>
    EOF;$dom = new DomDocument('1.0', 'UTF-8');
    $dom->loadXML($xml);// 活动root节点
    $root = $dom->getElementsByTagName('root')->item(0);$parent = $root->getElementsByTagName('parent')->item(0);changeNode($root, 'child', 0, 1);echo $dom->saveXML();function changeNode($parent, $node, $index1, $index2) {
        // 从上一级节点获取node节点
        $nodes = $parent->getElementsByTagName($node);    // 分别找出2个节点的内容
        $node1 = $nodes->item($index1);
        $node2 = $nodes->item($index2);    //创建临时节点
        $tmp1 = $node1->cloneNode(true);
        $tmp2 = $node2->cloneNode(true);    // 替换相应的内容
        $parent->replaceChild($tmp2, $node1);
        $parent->replaceChild($tmp1, $node2);
    }
    请问我想移动parent节点的位置,这样写为什么不好使?请帮我修改下,万分感谢!!!
      

  3.   

    最终是这样的可以移动parent节点
    <?php
    $xml = <<<EOF
    <?xml version="1.0"?>
    <root>
      <parent>
      <child>foo1</child>
      <child>foo2</child>
      <child>foo3</child>
      <child>foo4</child>
      </parent>
    <parent>
      <child>foo5</child>
      <child>foo6</child>
      <child>foo7</child>
      <child>foo8</child>
      </parent></root>
    EOF;$dom = new DomDocument('1.0', 'UTF-8');
    $dom->loadXML($xml);// 活动root节点
    $root = $dom->getElementsByTagName('root')->item(0);$parent = $root->getElementsByTagName('parent')->item(0);changeNode($root, 'parent', 0, 1);echo $dom->saveXML();function changeNode($parent, $node, $index1, $index2) {
      // 从上一级节点获取node节点
      $nodes = $parent->getElementsByTagName($node);  // 分别找出2个节点的内容
      $node1 = $nodes->item($index1);
      $node2 = $nodes->item($index2);  //创建临时节点
      $tmp1 = $node1->cloneNode(true);
      $tmp2 = $node2->cloneNode(true);  // 替换相应的内容
      $parent->replaceChild($tmp2, $node1);
      $parent->replaceChild($tmp1, $node2);
    }