PHP 创建与解析 XML
admin
2023-06-17 00:00:01
0
一. 使用 SimpleXML 操控 XML
要处理XML 文件,有两种传统的处理思路:SAX 和DOM。SAX 基于事件触发机制,
对XML 文件进行一次扫描,完成要进行的处理;DOM 则将整个XML 文件构造为一棵DOM
树,通过对DOM 树的遍历完成处理。这两种方法各有优缺点,SAX 的处理思路相对抽象,
DOM 的处理过程相对烦琐,都不很适合新手的入门。
PHP5 推出了一套新的XML 处理函数,即SimpleXML。名如其实,SimpleXML 本身小
巧精干,只提供了少量的几个方法函数,但用它处理起XML 文件功能却非常强大,操作也
非常的简单。
1.创建XML文件
$_xml =<<

1.0
xml解析测试

俱乐部
http://www.yc.com
李恢


北风网
http://www.ibeifeng.com
谁谁谁


电驴
http://www.verycd.com
姓黄的


xml;
$_sxe= new SimpleXMLElement($_xml); //创建对象解析xml字符串
$_sxe->asXML('test.xml'); //生成XML文件
2.载入XML文件
$_sxe= simplexml_load_file("test.xml"); //载入XML文件
var_dump($_sxe); //输出相关信息
print_r($_sxe); //输出主要信息
Reflection::export(new ReflectionClass($sxe)); //用反射查看详情
3.解析XML文件
$_sxe= simplexml_load_file("test.xml"); //载入XML文件
var_dump($_sxe); //输出相关信息
print_r($_sxe); //输出主要信息
Reflection::export(new ReflectionClass($_sxe)); //用发射查看详情
echo $_sxe->asXML();//打印整个XML
4.读出XML数据
$_sxe= simplexml_load_file("test.xml");
//读取一级节点的值,比如version标签
echo $_sxe->version;
//如果有多个,可以设置它的数字下标
echo $_sxe->version[2];
//如果想要全部打印出来,可以用遍历
foreach ($_sxe->version as $_version) {
echo '['.$_version.']';
}
//访问二级节点的name
echo $_sxe->user[1]->name;
//获取所有二级节点的name值
foreach ($_sxe->user as $_user) {
echo '['.$_user->name.']';
}
//获取二级节点的标签的属性
echo $_sxe->user[1]->author->attributes();
5.使用XPath来获取节点
$_sxe= simplexml_load_file("test.xml");
//使用XPath获取节点信息
$_version = $_sxe->xpath('/root/version');
echo $_version[1];
//遍历version
foreach ($_version as $_v) {
echo '['.$_v.']';
}
//访问二级节点
$_user = $_sxe->xpath('/root/user');
echo $_user[2]->name;
//遍历二级节点
foreach ($_user as $_u) {
echo '['.$_u->name.']';
}
//访问属性
echo $_user[1]->author->attributes();
二. 使用 DOMDocument 操控 XML
很多情况下,手工生成标记要求从上到下生成文档,必须保证标签都是完整的,开始和
结束标签。尽管借助于一些PHP函数或类可以有所改善,不过PHP还提供了一组更有帮助
的内置对象和函数。文档对象模型(Document Object Model,DOM)提供了一个树状结
构,能很容易创建和处理标签。
1.DOMDocument解析XML
//创建一个DOMDocument()
$_doc = new DOMDocument();
//载入xml
$_doc->load('test.xml');
//取version标签
$_version = $_doc->getElementsByTagName('version');
echo $_version->item(2)->nodeValue;
//遍历version标签
foreach ($_version as $v) {
echo $v->nodeValue;
}
2.DOMDocument生成XML
//声明xml
$_doc = new DOMDocument('1.0','utf-8');
//排版格式
$_doc->formatOutput = true;
//创建一个主标签
$_root = $_doc->createElement('root');
//创建一个一级标签version
$_version = $_doc->createElement('version');
//给version标签里赋值
$_versionTextNode = $_doc->createTextNode('1.0');
//将值放入version标签里
$_version->appendChild($_versionTextNode);
//将一级标签version放入root里
$_root->appendChild($_version);
//将主标签写入xml
$_doc->appendChild($_root);
//生成xml
$_doc->save('aaa.xml');

相关内容

热门资讯

菲总统马科斯访日,菲律宾民众在... 【环球时报报道 记者 邢晓婧】菲律宾总统马科斯26日抵达日本,开启为期4天的访日行程。据菲律宾ABS...
国家安全部提示:这些码不能随便... 扫码关注,扫码支付,扫码登录……二维码已融入我们工作、生活的方方面面,为我们提供了巨大便利。然而,国...
伊比莱瑞取得不锈钢粉末自动注射... 国家知识产权局信息显示,东莞市伊比莱瑞科技有限公司取得一项名为“一种不锈钢粉末自动注射成型装置”的专...
星链涨价5倍,五角大楼和Spa... 【文/观察者网 熊超然】随着亿万富翁马斯克拥有的“星链”(Starlink)网络引导美制自杀式无人机...
人民日报刊文:妄图洗白成“解放... 妄图洗白成“解放者”,日本注定徒劳(环球走笔)牛瑞飞 《人民日报》(2026年05月27日 第 15...
AI支付时代要来了吗?支付宝A... 【大河财立方 记者 杨霄 王宇】5月26日,在支付宝AI支付生态大会上,支付宝宣布,“AI支付”已完...
毫厘间的山河:0.001%背后... 元素周期表的版图上,锌,是一块古老而平凡的疆域。但当它的纯度跃升至99.998%时,这块金属便被赋予...
朝鲜进行新型武器系统试射 当地时间5月26日,朝鲜导弹总局和国防科学院进行轻型多用途导弹发射系统和多管战术巡航导弹武器系统试验...
原创 华... 华为各大产品全面发展,而且是多系列多版本,其中手机/笔记本均拥有4个系列,平板/手表均拥有6个系列,...
俄法院裁定:立即赔偿俄约200... △俄罗斯中央银行(资料图)当地时间5月26日,俄罗斯莫斯科仲裁法院批准俄央行的申请,将对欧洲清算银行...