一个外部xml文件01.xml
……
<table id="2">
<head>中国</head>
</table>
<table id="3">
<head>其它小国</head>
</talbe>
……
我现在要修改这个xml一节点<table id="2">下<head>中国</head>的内容
怎么修改,不要给我foreach的方法,那个对于上万个table节点的xml,太消耗资源!要用dom+xpath的方法修改。似乎用到一个nodeValue,但我在学习中,还不会,请指教!特别提示,不要给那种节点替换的方法,我要的是修改哦!请高手不吝赐教!感谢!
……
<table id="2">
<head>中国</head>
</table>
<table id="3">
<head>其它小国</head>
</talbe>
……
我现在要修改这个xml一节点<table id="2">下<head>中国</head>的内容
怎么修改,不要给我foreach的方法,那个对于上万个table节点的xml,太消耗资源!要用dom+xpath的方法修改。似乎用到一个nodeValue,但我在学习中,还不会,请指教!特别提示,不要给那种节点替换的方法,我要的是修改哦!请高手不吝赐教!感谢!
$dup = $xmldata->xpath("/html/table[@id='2']");
$dup[0]->head = 'link2';
$xml = $xmldata->asXML();
echo $xml;
simplexml 加xpath
<html>
<table id="2">
<head>中国</head>
</table>
<table id="3">
<head>其它小国</head>
</table>
</html>
TEST;$dom = new DOMDocument();
$dom->loadXML($strXML);$xpath = new DOMXPath($dom);
$emps = $xpath->query("/html/table[@id=2]/head");
$emps->item(0)->nodeValue = "222";
echo $dom->saveXML();
file_put_contents("原来的文件.xml",$dom->saveXML());
...
$dom->save('xxx.xml');
<?php
$dom = new DOMDocument();
$dom->load("../m-admin/m-user_div/user03-8/storehouse.xml");$xpath = new DOMXPath($dom);
$emps = $xpath->query("/table[@shuyu_id=52]/onetableshuliang");
$emps->nodeValue = "2222222";
$dom->saveXML();
$sxml=$dom->save("../m-admin/m-user_div/user03-8/storehouse.xml");
echo $sxml;
?>我的输出结果是个数子。我的路径没有问题!
问题就是,没有修改文本
/是从根目录开始搜索的.
$emps = $xpath->query("/html/table[@id=2]/head");
=>$emps = $xpath->query("//table[@shuyu_id=52]/onetableshuliang");
onetableshuliang必须是个节点才行.
以下是我的xml文件:
<?xml version="1.0" encoding="gb2312"?>
<u_form>
<head>
<chuangjianshijian>09-11-04 16:26:19</chuangjianshijian>
<s_com>01</s_com>
<s_user>user03</s_user>
</head>
<content>
<table shuyu_id="52">
<pname>如果小数</pname>
<onetableshuliang>1</onetableshuliang>
</table>
<table shui_id="53">
<pname>如果小数2</pname>
<onetableshuliang>2</onetableshuliang>
</table>
</content>
</u_form>
$dom = new DOMDocument();
$dom->load('t3.xml');$xpath = new DOMXPath($dom);
$emps = $xpath->query("//table[@shuyu_id=52]/onetableshuliang");
$emps->item(0)->nodeValue = "444";
$dom->save('t3.xml');