php读取xml文件的三种实现方法
文章介绍了三种方式来读取xml文件分别是new DOMDocument(),正则解析xml,用parser函数来读取xml数据,这些方法都是可行的,但第一种和最后一种要好一些.
new DOMDocument()实例代码如下:
<?php $doc = new DOMDocument(); $doc->load('books.xml'); $books = $doc->getElementsByTagName("book"); foreach ($books as $book) { $authors = $book->getElementsByTagName("author"); $author = $authors->item(0)->nodeValue; $publishers = $book->getElementsByTagName("publisher"); $publisher = $publishers->item(0)->nodeValue; $titles = $book->getElementsByTagName("title"); $title = $titles->item(0)->nodeValue; echo "$title - $author - $publisher/n"; } ?>
Salin selepas log masuk
正则解析,代码如下:
<?php $xml = ""; $f = fopen('books.xml', 'r'); while ($data = fread($f, 4096)) { $xml.= $data; } fclose($f); preg_match_all("//<book/>(.*?)/<//book/>/s", $xml, $bookblocks); foreach ($bookblocks[1] as $block) { preg_match_all("//<author/>(.*?)/<//author/>/", $block, $author); preg_match_all("//<title/>(.*?)/<//title/>/", $block, $title); preg_match_all("//<publisher/>(.*?)/<//publisher/>/", $block, $publisher); echo ($title[1][0] . " - " . $author[1][0] . " - " . $publisher[1][0] . "/n"); } ?>
Salin selepas log masuk
books.xml文件如下:
<books> <book> <author>Jack Herrington</author> <title>PHP Hacks</title> <publisher>O'Reilly</publisher> </book> <book> <author>Jack Herrington</author> <title>Podcasting Hacks</title> <publisher>O'Reilly</publisher> </book> </books>
Salin selepas log masuk
下面就给大家举一个小小的例子用parser函数来读取xml数据,代码如下:
<?php $parser = xml_parser_create(); //创建一个parser编辑器 xml_set_element_handler($parser, "startElement", "endElement"); //设立标签触发时的相应函数 这里分别为startElement和endElenment xml_set_character_data_handler($parser, "characterData"); //设立数据读取时的相应函数 $xml_file = "1.xml"; //指定所要读取的xml文件,可以是url $filehandler = fopen($xml_file, "r"); //打开文件 while ($data = fread($filehandler, 4096)) { xml_parse($parser, $data, feof($filehandler)); } //每次取出4096个字节进行处理 fclose($filehandler); xml_parser_free($parser); //关闭和释放parser解析器 $name = false; $position = false; function startElement($parser_instance, $element_name, $attrs) //起始标签事件的函数 { global $name, $position; if ($element_name == "NAME") { $name = true; $position = false; echo "名字:"; } if ($element_name == "POSITION") { $name = false; $position = true; echo "职位:"; } } function characterData($parser_instance, $xml_data) //读取数据时的函数 { global $name, $position; if ($position) echo $xml_data . "<br>"; if ($name) echo $xml_data . "<br>"; } function endElement($parser_instance, $element_name) //结束标签事件的函数 { global $name, $position; $name = false; $position = false; } ?>
Salin selepas log masuk
xml文件代码如下:
<?xml version="1.0" <employees> <employee> <name>张三</name> <position age="45">经理</position> </employee> <employees> <employee> <name>李四</name> <position age="45">助理</position> </employee> </employees>
Salin selepas log masuk
parser是php内置的一个用来处理xml的解析器,它的工作由三个事件组成:起始标签、 读取数据、结束标签.
也就是说在对xml进行处理的时候每当遇到起始标签、数据和结束标签的时候函数会做相应的动作来完成对xml数据的转换.
教程链接:
随意转载~但请保留教程地址★
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas
R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
Berapa lama masa yang diperlukan untuk mengalahkan fiksyen berpecah?
1 bulan yang lalu
By DDD
R.E.P.O. Tetapan grafik terbaik
2 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
Assassin's Creed Shadows: Penyelesaian Riddle Seashell
1 minggu yang lalu
By DDD
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
2 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
