Maison php教程 php手册 php读取xml文件的三种实现方法

php读取xml文件的三种实现方法

May 25, 2016 pm 04:42 PM

文章介绍了三种方式来读取xml文件分别是new DOMDocument(),正则解析xml,用parser函数来读取xml数据,这些方法都是可行的,但第一种和最后一种要好一些.

new DOMDocument()实例代码如下:

<?php
$doc = new DOMDocument();
$doc->load(&#39;books.xml&#39;);
$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";
}
?>
Copier après la connexion

正则解析,代码如下:

<?php
$xml = "";
$f = fopen(&#39;books.xml&#39;, &#39;r&#39;);
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");
}
?>
Copier après la connexion

books.xml文件如下:

<books> 
  <book> 
  <author>Jack Herrington</author> 
  <title>PHP Hacks</title> 
  <publisher>O&#39;Reilly</publisher> 
  </book> 
  <book> 
  <author>Jack Herrington</author> 
  <title>Podcasting Hacks</title> 
  <publisher>O&#39;Reilly</publisher> 
  </book> 
</books>
Copier après la connexion

下面就给大家举一个小小的例子用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;
}
?>
Copier après la connexion

xml文件代码如下:

<?xml version="1.0" 
<employees> 
<employee> 
<name>张三</name> 
<position age="45">经理</position> 
</employee> 
<employees> 
<employee> 
<name>李四</name> 
<position age="45">助理</position> 
</employee> 
</employees>
Copier après la connexion

parser是php内置的一个用来处理xml的解析器,它的工作由三个事件组成:起始标签、 读取数据、结束标签.

也就是说在对xml进行处理的时候每当遇到起始标签、数据和结束标签的时候函数会做相应的动作来完成对xml数据的转换.


教程链接:

随意转载~但请保留教程地址★

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
4 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)