首页博客网络编程
如何读取XML文件:在XML解析中获取节点和属性值
摘要 PHP SimpleXML扩展允许程序员PHP读取XML文档,访问并使用它们作为节点组成的数据结构。 它还允许获取节点和属性值。为此,我们使用PHP函数。simplexml_load_file

到现在为止,您已经了解了什么是 PHP 解析器,以及如何使用它们读取 XML 文件。您还更仔细地了解了 SimpleXML 解析器。在本教程中,我们将加深您对 SimpleXML 以及如何成功读取 XML 文件的了解。

文档的树结构由节点组成。按照树的比喻,你可以称它们为分支。元素是一种节点类型。属性也是如此,它不被视为元素的子元素,尽管它确实包含有关它的信息。此数据包含在引号中,这使它成为一个字符串

通过使用 PHP XML 代码示例,我们将向您展示如何获取节点和属性的值。为此,我们将使用 PHP simplexml_load_file() 函数。

内容

如何读取XML文件:主要提示

  • SimpleXML 是一个基于树的解析器。树数据结构由节点组成。

  • 您可以使用 SimpleXML 访问节点属性值。

  • 为此,您必须了解PHP函数的用法。simplexml_load_file

XML 文件示例

让我们看一下我们的一个 XML 文档,它称为 。您将看到它列出了三类书籍。每个类别都有一本书,特定书籍的信息包括其名称,作者,价格,语言和发行年份:bookstore.xml

复制

<?xml version="1.0" encoding="utf-8"?><books>
  <book category="COOK">
    <name lang="en">The Silver Spoon</name>
    <by>Cielia D`Onofrio</by>
    <released>1950</released>
    <pricing>35.00</pricing>
  </book>
  <book category="FANTASY">
    <name lang="en">The Fellowship of the Ring</name>
    <by>J.R.R. Tolkien</by>
    <released>1954</released>
    <pricing>39.99</pricing>
  </book>
  <book category="TECH">
    <name lang="en-us">Think like a programmer</name>
    <by>V. Anton Spraul</by>
    <released>2012</released>
    <pricing>39.99</pricing>
  </book></books>

仔细分析它,因为我们将使用此文件来解释如何读取 XML 文件。

从特定元素检索节点值

想象一下,我们需要让我们用PHP编写的代码阅读我们在上一节中介绍的XML示例。假设我们要返回前两本书的标题。您在下面看到的代码从 books.xml 文件中获取我们需要的书籍元素的值:<name>

复制

<?php
  $xml = simplexml_load_file('bookstore.xml') or die('Failed to create an object');  echo $xml->book[0]->name . "<br>";  echo $xml->book[1]->name; 
?>

执行此 PHP XML 代码后,我们得到输出的前两本书的名称,如下所示:
The Silver Spoon
The Fellowship of the Ring

循环获取值

现在,如果我们想获取每个元素的节点值,我们可以使用循环。让我们看看下面的代码。基本上,它遍历 XML 文档中的每个元素,获取每个元素的节点值:<book>

复制

<?php
  $xml = simplexml_load_file('bookstore.xml') or die('Failed to create an object');  foreach($xml->children() as $books) {       	
    echo $books->name . ", ";     
    echo $books->by . ", ";     
    echo $books->released . ", ";      	
    echo $books->pricing . "<br>";
  }?>

这是我们在代码运行完成后得到的输出:
The Silver Spoon, Cielia D'Onofrio, 1950, 35.00
The Fellowship of the Ring, J.R.R. Tolkien, 1954, 39.99
Think like a programmer, V. Anton Spraul, 2012, 39.99

特定属性值

现在,让我们尝试更复杂的方法。您可以在下面看到的代码示例将从它找到的第一个元素中获取属性值。然后,它将从第二个元素的元素中检索属性的值:category<book>lang<name><book>

复制

<?php
  $xml = simplexml_load_file('bookstore.xml') or die('Failed to create an object');  echo $xml->book[0]['category'] . "<br>";  echo $xml->book[1]->name['lang']; 
?>

我们得到的输出是第一本书的类别和第二本书的语言:
COOK
en

循环检索属性值

下面的 PHP XML 示例显示了循环访问我们 book.xml 文件中的每个元素并获取其属性值的脚本:<name>

复制

<?php
  $xml = simplexml_load_file('bookstore.xml') or die('Failed to create an object');  foreach($xml->children() as $books) {       	
    echo $books->name['lang'];    
    echo "<br>"; 
  }?>

这是我们在本例中得到的输出:
en
en
en-us

如何读取 XML 文件:摘要

  • PHP SimpleXML扩展允许程序员PHP读取XML文档,访问并使用它们作为节点组成的数据结构。

  • 它还允许获取节点属性值。为此,我们使用PHP函数。simplexml_load_file


声明提示:若要转载请务必保留原文链接,申明来源,谢谢合作!

本文链接:https://www.gaoxuejun173.top/blog/198

广告位

本文配乐
来说两句吧

该文章已禁止评论

最新评论

广告位