Skip to content

21. 处理 XML 文档

Image

请看以下 XML 文件 [data.xml]


<?xml version="1.0" encoding="UTF-8"?>
 
<tribu>
    <enseignant>
        <personne sexe="M">
            <nom>dupont</nom>
            <prenom>jean</prenom>
            <age>28</age>
            ceci est un commentaire
        </personne>
        <section>27</section>
    </enseignant>
    <etudiant>
        <personne sexe="F">
            <nom>martin</nom>
            <prenom>charline</prenom>
            <age>22</age>
        </personne>
        <formation>dess IAIE</formation>
    </etudiant>
</tribu>

我们使用以下脚本分析此文档:


<?php
 
// file XML to be processed
$FILE_NAME = "data.xml";
// operation
$xml = simplexml_load_file($FILE_NAME);
print_r($xml);
print_r($xml->enseignant->personne['sexe']);
$nom=$xml->enseignant->personne->nom;
print "nom=$nom\n";
$sexe=$xml->enseignant->personne['sexe'];
print "sexe=$sexe\n";
$formation=$xml->etudiant->formation;
print "formation=$formation\n";
print "isset=".isset($xml->enseignant->personne->nom)."\n";
print "isset=".isset($xml->enseignant->personne->xx)."\n";

这里我们使用了一个名为 [simpleXML] 的 PHP 模块,它允许我们处理 XML 文档。

  • 第 6 行:加载 XML 文件;
  • 第 7 行:显示 XML 文档;
  • 第 8 行:显示某位教师的 'sex' 属性的值:<teacher><person sex='…'>;
  • 第 9 行:显示第一个标签 <teacher><person><name> 的值

请注意,根标签 <tribe> 并未出现在代码中。它可以是任何内容;

控制台输出


SimpleXMLElement Object
(
    [enseignant] => SimpleXMLElement Object
        (
            [personne] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [sexe] => M
                        )
 
                    [nom] => dupont
                    [prenom] => jean
                    [age] => 28
                )
 
            [section] => 27
        )
 
    [etudiant] => SimpleXMLElement Object
        (
            [personne] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [sexe] => F
                        )
 
                    [nom] => martin
                    [prenom] => charline
                    [age] => 22
                )
 
            [formation] => dess IAIE
        )
 
)
SimpleXMLElement Object
(
    [0] => M
)
nom=dupont
sexe=M
formation=dess IAIE
isset=1
isset=
  • 第 1-37 行:以 [simpleXML] 对象形式呈现的 XML 文档。

前面的脚本并未展示 [simpleXML] 模块的所有功能,但足以让我们编写该应用练习的新版本。