php 如何解析xml,php如何解析xml

本文介绍了PHP中解析XML的四种方法,重点讲解了SimpleXML的使用。通过示例展示了如何获取XML节点的属性,以及如何将XML转换为关联数组。在处理XML文件时,还提供了检查重复字段的安全机制,确保数据的唯一性。
摘要由CSDN通过智能技术生成

php解析xml主要有以下几种方式:Xml parser, SimpleXML, XMLReader, DOMDocument。

我主要使用了SimpleXML来进行解析

//获取属性

function get_attrs($xml)

{

$attrs = array();

foreach ($xml->attributes() as $key => $val) {

$key = strval($key);

$val = strval($val);

$attrs[$key] = $val;

}

return $attrs;

}

//检重

function xml_to_assoc_array($tag_name, $key_name, $filename, $required_fields = array())

{

$arr = array();

$fname=CONF_PATH .$filename;

if(!file_exists($fname)){

return true;

}

$xml = safe_open_xml_file($fname);

if ($xml === false)

{

return $arr;

}

foreach ($xml->xpath("//".$tag_name) as $name => $child) {

$attrs = get_attrs($child);

$key = $attrs[$key_name];

# if (empty($key)) {

# continue;

# }

if (!empty($key) && array_key_exists($key, $arr)) {

blame_and_die("解析文件{$filename}时, 发现字段 {$key_name} = {$key} 重复了\r\n");

}

$attrs['_xml_'] = $child;

if (!empty($key_name)) {

$arr[$key] = $attrs;

} else {

$arr[] = $attrs;

}

}

return true;

}

//打开文件

function safe_open_xml_file($filename)

{

if (!file_exists($filename)) {

blame_and_die("文件{$filename}不存在!");

}

$xml = simplexml_load_file($filename);

if ($xml === false) {

echo "解析{$filename}有误!请检查xml格式!错误信息如下:\r\n";

foreach (libxml_get_errors() as $error) {

echo "\t", $error->message;

}

}

return $xml;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值