<?xml version="1.0" encoding="utf-8" ?>
<AllData>
<xueshengmen>
<xuesheng>
<name>张三</name>
<yuwen>80</yuwen>
<shuxue>90</shuxue>
<yingyu>70</yingyu>
</xuesheng>
<xuesheng>
<name>李四</name>
<yuwen>60</yuwen>
<shuxue>90</shuxue>
<yingyu>75</yingyu>
</xuesheng>
</xueshengmen>
</AllData>
[/code]
瑞在有一个XML文件xueshengshuju上面是部分数据
现在需要在每个xuesheng的节点里面添加一个zongfen的属性并且它的值等于yuwen+shuxue+yingyu的值
如下面的结果<?xml version="1.0" encoding="utf-8" ?>
<AllData>
<xueshengmen>
<xuesheng>
<name>张三</name>
<yuwen>80</yuwen>
<shuxue>90</shuxue>
<yingyu>70</yingyu>
<zongfen>240</zongfen>
</xuesheng>
<xuesheng>
<name>李四</name>
<yuwen>60</yuwen>
<shuxue>90</shuxue>
<yingyu>75</yingyu>
<zongfen>2225</zongfen>
</xuesheng>
</xueshengmen>
</AllData>
[/code]求完整的代码,谢谢各位了!

解决方案 »

  1.   

    <?php$xml = <<<XML
    <?xml version="1.0" encoding="utf-8" ?>
    <AllData>
    <xueshengmen>
    <xuesheng>
    <name>张三</name>
    <yuwen>80</yuwen>
    <shuxue>90</shuxue>
    <yingyu>70</yingyu>
    </xuesheng>
    <xuesheng>
    <name>李四</name>
    <yuwen>60</yuwen>
    <shuxue>90</shuxue>
    <yingyu>75</yingyu>
    </xuesheng>
    </xueshengmen>
    </AllData>
    XML;$doc=new DomDocument('1.0','utf-8');@$doc->loadXML($xml);
    $xpath = new DOMXpath($doc);
    $xuesheng_nodes = $xpath -> query( "//xuesheng" );foreach($xuesheng_nodes as $xuesheng) {

    $total = 0;

    // 计算总成绩
    foreach(array('yuwen', 'shuxue', 'yingyu') as $node) {
    $nodes = $xpath -> query( "//$node",  $xuesheng);
    $total += (int)$nodes->item(0)->nodeValue;
    }

    // 添加成绩
    $zongfen_node = $doc->createElement('zongfen', $total);
    $xuesheng->appendChild($zongfen_node);

    }
    echo $doc->saveXML();