PHP:什么是SimpleXMLElement()类和SimpleXML_load_string()之间的区别?

时间:2011-05-20 19:52:44

标签: php xml simplexml

我见过很多编码员实现SimpleXML_load_string()而不是SimpleXMLElement()类。使用前者对后者有什么好处?我看过PHP manual on simplexml。我无法理解它是什么。

非常感谢任何帮助和指导(可能通过示例)。提前谢谢。

3 个答案:

答案 0 :(得分:19)

simplexml_load_string()(顾名思义)从字符串加载xml并返回SimepleXMLElement的对象。这与使用类的通常构造函数没有区别。

更新

SimpleXML::__construct()有一个额外的参数(第三个)bool $data_is_url = false。如果这是true,则行为与simplexml_load_file()相同(与公共流包装器一起)。因此,simplexml_load_*() - 两个函数都涵盖与SimpleXML::__construct()相同的功能。

其他函数simplexml_load_*()有第二个参数string $class_name = "SimpleXMLElement"来指定要返回的对象的类。这不是函数的特定功能,因为你可以“使用”与通常的instanciation非常相似的东西

class MyXML extends SimpleXMLElement {}
$a = new MyXML($xml);
$b = simplexml_load_string($xml, 'MyXML');

OOP和程序方法之间的区别在于,函数在出错时返回false,但构造函数抛出异常。

答案 1 :(得分:4)

它主要是一个方便包装。通过自己构建基本元素,您至少需要两行代码才能完成任何事情。使用simplexml_load_string()单个表达式就足够了:

 print simplexml_load_string($xml)->title;

短于:

 $e = new SimpleXMLElement($xml);
 print $e->title;

当然,功能签名也有轻微的变化。

  

更新:

的长度完全相同
print(new SimpleXMLElement($xml))->title;

答案 2 :(得分:0)

simplexml_load_string可以返回不同的对象:

  

CLASS_NAME

     

您可以使用此可选参数   simplexml_load_string()将返回一个   指定类的对象。那   上课应该延长   SimpleXMLElement类。