首页 > PHP教程 > php开发知识文章

php 读取XML文件的方法--基于DOMDocument、simplexml、正则及xmlreader读取

本文主要介绍了php 读取XML文件的方法,有DOMDocument、simplexml、正则及xmlreader读取xml文件。

xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<language>
<lan>
<type>web</type>
<name>php</name>
</lan>
<lan>
<type>web</type>
<name>java</name>
</lan>

</language> 

DOMDocument

$doc = new DOMDocument();
$filepath = $_SERVER['DOCUMENT_ROOT']."/a.xml"; //xml文件路径
$doc->load($filepath);
$re = $doc->getElementsByTagName("lan");
foreach ($re as $va) {
$lan = $va->getElementsByTagName("type");
$type = $lan->item(0)->nodeValue;
echo $type;
$lan1 = $va->getElementsByTagName("name");
$name = $lan1->item(0)->nodeValue;
echo $name;
}

simplexml

//XML中的数据,读取到数组对象中
$xml_array = simplexml_load_file('a.xml');

foreach ($xml_array as $tmp) {
echo $tmp->type . "-" . $tmp->name . "<br>";
}

php正则表达式

$xml = "";
$f = fopen('a.xml', 'r');
//读取数据
while ($data = fread($f, 4096)) {
$xml .= $data;
}
fclose($f);

//匹配最外层标签里面的内容
preg_match_all("/\<lan\>(.*?)\<\/lan\>/s", $xml, $lan);

foreach ($lan[1] as $k => $va) {
//匹配出名字
preg_match_all("/\<name\>(.*?)\<\/name\>/", $va, $name);
//匹配出类型
preg_match_all("/\<type\>(.*?)\<\/type\>/", $va, $type);

foreach ($name[1] as $key => $val) {
echo $val . " - " . $type[1][$key] . "<br>";
}
}

xmlreader

$reader = new XMLReader();
$reader->open('a.xml'); //读取xml数据
$i = 1;
while ($reader->read()) {
//是否读取
if ($reader->nodeType == XMLReader::TEXT) {
//判断node类型
echo $reader->value . "<br>";
$i++;
}
}

以上就是本文php 读取XML文件的方法--基于DOMDocument、simplexml、正则及xmlreader读取的全部内容,希望本文所述对大家PHP程序设计有所帮助。

php 读取XML文件的方法

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。