首页博客网络编程
SimpleXML 解析器:使 PHP 使用更少的代码行解析 XML
摘要 SimpleXML是一个非常方便的选择,因为它从版本5开始就内置在PHP中,并且在所有PHP支持服务器中都可用。 它是一个基于树的解析器。因此,您需要了解要分析的文档的结构。XML 文档中的元素被归类为 SimpleXMLElement。 SimpleXML允许您将XML文件视为可用的数据结构:您可以轻松获取某些内容,属性或元素名称。基本上,它将PHP XML转换为数组。 与 Expat 或 DOM 解析器相比,它需要更少的代码行来正确解析 PHP XML 数据。

要使 PHP 解析 XML 文档,您需要使用解析器。有多种方法可以使 PHP 解析 XML 数据,每种方法都更适合不同的情况。

SimpleXML 设计用于管理和从 XML 文件中检索数据。应用后,SimpleXML 将组织 XML 文档的内容,以便您可以检索有关不同元素及其属性的信息。您甚至可以向元素添加新的子元素并对其进行计数。

顾名思义,PHP SimpleXML最适合具有简单结构的小型和XML文件。使用大型文档可能会破坏其性能。但是,如果要解析的文件很小,则 SimpleXML 将帮助您使用比其他解析器更少的代码行来执行此操作。

内容

简单XML:主要提示

  • PHP SimpleXML 扩展允许您访问和使用 XML 数据。

  • 此解析器基于树,提供了一种获取特定元素、属性或文本内容名称的有效方法。但是,您必须了解正在使用的 XML 文档的布局或结构。

  • 使用简单 XML,您可以将用 PHP XML 编写的文档转换为数组或对象。

  • 它比它的替代品ExpatDOM需要更少的代码行。

  • 它可以在任何安装了 PHP 的服务器上使用。

读取 XML 数据:字符串

每当我们的工作需要PHP从字符串中读取XML文档数据时,我们使用一个名为.simplexml_load_string()

假设我们有一个包含 XML 数据的变量。下面的代码示例演示它最初声明的外观:$my_data

复制

$my_data = 
"<?xml version='1.0' encoding='UTF-8'?><note><to>You</to><from>Me</from><heading>The Game</heading><body>You lost it.</body></note>";

现在,在下面的示例中,用于PHP直接从前面提到的变量中读取XML数据:simplexml_load_string()

复制

<?php
  $xml_data = "<?xml version='1.0' encoding='UTF-8'?>  
    <note>  
    <to>You</to>  
    <from>Me</from>  
    <heading>The Game</heading>  
    <body>You lost it.</body>  
    </note>";  
  $xml = simplexml_load_string($xml_data) or die('Failed to create object');
  print_r($xml);  
?>

以下是我们在 XML 中得到的输出:

复制

SimpleXMLElement Object ( [to] => You [from] => Me [heading] => The Game [body] => You lost it. )

要捕获所有错误,然后在加载 PHP XML 文件时检查它们,您可以使用 libxml 函数。查看下面的代码示例。您可以看到我们正在尝试加载损坏的 XML:

复制

<?php
  libxml_use_internal_errors(true);
  $my_data =    "<?xml version='1.0' encoding='UTF-8'?> 
    <document> 
    <to>You</wrong>
    <from>Me</wrong>
    <heading>The Game</wrong>
    <body>You lost it</wrong>
    </document>"; 

  $xml = simplexml_load_string($my_data);  if ($xml === false) {    echo "Failed to load XML: ";    foreach(libxml_get_errors() as $error) {      echo "<br>", $error->message;
    }
  } else {
    print_r($xml);
  }?>

现在,这是我们在这种情况下将在 XML 中获得的输出:

复制

Failed loading XML: 
Opening and ending tag mismatch: to line 3 and wrong
Opening and ending tag mismatch: from line 4 and wrong
Opening and ending tag mismatch: heading line 5 and wrong
Opening and ending tag mismatch: body line 6 and wrong

从文件中读取

通过使用 ,可以使 PHP 从文件中解析 XML 数据。假设我们正在使用一个简单地称为file.xml的XML文档。在下面的示例中,您可以查看其内容:simplexml_load_file()

复制

<?xml version="1.0" encoding="UTF-8"?><note>
  <to>You</to>
  <from>Me</from>
  <heading>The Game</heading>
  <body>You lost it.</body></note>

现在,让我们看看如何使用从 XML 文档中读取数据:simplexml_load_string()

复制

<?php  
  $xml = simplexml_load_file("file.xml") or die("Failed to create object");  	
  print_r($xml);  
?>

这是我们显示的 SimpleXMLElement:

复制

SimpleXMLElement Object ( [to] => You [from] => Me [heading] => The Game [body] => You lost it. )

简单XML:摘要

  • SimpleXML是一个非常方便的选择,因为它从版本5开始就内置在PHP中,并且在所有PHP支持服务器中都可用。

  • 它是一个基于树的解析器。因此,您需要了解要分析的文档的结构。XML 文档中的元素被归类为 SimpleXMLElement。

  • SimpleXML允许您将XML文件视为可用的数据结构:您可以轻松获取某些内容,属性或元素名称。基本上,它将PHP XML转换为数组。

  • 与 Expat 或 DOM 解析器相比,它需要更少的代码行来正确解析 PHP XML 数据。


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

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

广告位

本文配乐
来说两句吧

该文章已禁止评论

最新评论

广告位