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"; } ?>
Copy after login
正则解析,代码如下:
<?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"); } ?>
Copy after login
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>
Copy after login
下面就给大家举一个小小的例子用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; } ?>
Copy after login
xml文件代码如下:
<?xml version="1.0" <employees> <employee> <name>张三</name> <position age="45">经理</position> </employee> <employees> <employee> <name>李四</name> <position age="45">助理</position> </employee> </employees>
Copy after login
parser是php内置的一个用来处理xml的解析器,它的工作由三个事件组成:起始标签、 读取数据、结束标签.
也就是说在对xml进行处理的时候每当遇到起始标签、数据和结束标签的时候函数会做相应的动作来完成对xml数据的转换.
教程链接:
随意转载~但请保留教程地址★
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article
R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago
By 尊渡假赌尊渡假赌尊渡假赌
Assassin's Creed Shadows: Seashell Riddle Solution
1 weeks ago
By DDD
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago
By 尊渡假赌尊渡假赌尊渡假赌
Where to find the Crane Control Keycard in Atomfall
1 weeks ago
By DDD

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics
CakePHP Tutorial
1359
52

