php可以操作dom吗,PHP DOM操作

/**

* PHPDOM主要用于增删改

* SimpleXML主要用于查询

*

*/

//设置头

header('content-type:text/html;charset=utf-8');

//实例化DOM对象

$doc = new DOCDocument('1.0','utf-8');

//加载XML文件

$doc -> load('lianxi.xml'); / 1$xml=simplexml_load_file('lianxi.xml');

//PHPDOM增删改都要找到其父节点

//$project = $doc -> getElementsByTagName('student') -> item(0);

//节点---增---先创建节点

$student = createmElement('student');

$name = createmElement('name','这是name的值');

$age = createmElement('age','这是age的值');

//节点---增---再连接

//$students = $doc ->getElementsByTagName('project') -> item(0) -> appendChild($student);//获取根节点,可以用documentElement

$students = documentElement -> appendChild($student ); //把$student放入根节点之下

$students -> appendChild($name);

$students -> appendChile($age);//然后保存

//属性---增

$student = $doc -> getElementsByTagName('student') -> item(1);//找到第二个人

$doc -> setAttribute('id','s103');//setAttribute('属性名','属性值')//然后保存

/******************************************************************************************************/

//节点---删---首先找到节点---然后修改

$project = $doc -> getElementsByTagName('student') -> item(0);//找到第一个人

$doc -> documentElement -> removeChild($project);//然后保存

//属性---删

$student = $doc -> getElementsByTagName('student') -> item(0);

$doc -> removeAttribute('id');//removeAttribute('属性名')//然后保存

/******************************************************************************************************/

//节点---改---于创建节点一样,不同之处在于,最后

$old_element = $doc -> getElementsBtTagName('student') -> item(0);

$student = createElement('student');

$name = createElement('name');

$age = createElement('age');

$students = documentElement -> appendChild($student);

$students -> appendChild($name);

$students -> appendChild($age);

//改和增的不同之处------用新节点替换原节点replaceChild('new','old');

$doc -> replaceChild($students,$old_element );

//属性---改

$old_element = $doc -> getElementsByTagName('student') -> item(0);

$old_element -> documentElement('student') -> setAttribute('id','s104');

/******************************************************************************************************/

/**

* simplexml

*/

//@遍历所有信息

$xml = simplexml_load_file('lianxi.xml');

for($i=0,$count=count($xml -> student);$i

echo $xml -> student[0] -> name;

echo $xml -> student[0] -> age;

echo '
';

}

//@获取所有节点($xml -> Children();)

$xml = simplexml_load_file('lianxi.xml');

foreach($xml -> Children() as $value){

echo $value -> name.'   ' . $value -> age;

}

//@php中输出xml文档有两种形式,1、字符串连接。2、定界符。别忘了修改头文件(content-type:text/xml)

//@添加节点addChild()

$xml = simple_load_file('lianxi.xml');

$students = $xml -> addChild('student');

$students -> addChild('name','shi');

$students -> addChild('age','10000');

$xml -> asXML('lianxi.xml');

//@添加属性

$xml = simple_load_file('lianxi.xml');

$xml -> student[0] -> addAttribute('id','s105');//这个不能作为修改项

$xml -> asXML('lianxi.xml');

/******************************************************************************************************/

/**

* xpath是专门用于查询的语言

*/

//可以输出名( /斜线 )

$student = $xml -> xpath('/project/student');

echo $student[0] -> name;

//或---可以输出名

$student = $xml -> xpath('/project/student/name');

echo name[0];

//可以输出名 (// 斜线),不论层级关系,找到所有相匹配

$student = $xml -> xpath('//name');

echo $student[0];

//可以输出名 ( * 代替输出符合的)

$student = $xml -> xpath('/project/student/*');

foreach($student as $value){

echo $value;

}

//可以输出名,方块里可以进一步指定人名

$student = $xml -> spath('/project/student[2]/name');//输出第二个人的名字

echo $student[0];

//可以输出名,方块里可以进一步指定元素

$student = $xml -> xpath('/project/student[@id]');

for($i=0,$count=count($student);$i

echo $student[$i] -> name;

echo $student[$i] -> age;

echo '
';

}

//还有几种特殊用法

$student = $xml -> xpath("/project/student[name='张三']");//找到所有名为 ‘张三的人’

$student = $xml -> xpath("/project/student[age='28']");//找到所有年龄等于28的人

$student = $xml -> xpath("/project/student[age>'28']"); //找到所有年龄大于28的人

for($i=0,$count=count($student);$i

echo $student[0] -> name;

echo $student[0] -> age;

echo '
';

}

/******************************************************************************************************/

//保存

$doc -> save('lianxi.xml'); / 1$xml -> asXML('lianxi.xml');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值