从文件加载时使用 SimpleXMLElement

Pau*_*Hgo 1 php xml simplexml

我有一个问题让我摸不着头脑,我相信这是一个简单的解决方案,但对于我的生活,我找不到它。

我正在尝试使用 PHP 中的 XMLReader 计算 XML 文件的节点。直到现在还没有什么新鲜事,这里有很多关于如何做到这一点的例子。问题是所有示例都是从表示整个 XML 文件的字符串 (simplexml_load_string) 加载的。这很好用。但是,如果我尝试从文件加载,我会得到“预期的开始标签,‘<’ 未找到” SimpleXML 的异常。

这是代码:

$xml = simplexml_load_file($fname); //$fname is a valid xml file, it loads fine
$elem = new SimpleXMLElement($xml); //it chokes on this line
Run Code Online (Sandbox Code Playgroud)

从字符串加载它虽然有效,但我确实想从文件加载它:

$xml = simplexml_load_string($xmlstring); //$xmlstring is the content of the same xml file
Run Code Online (Sandbox Code Playgroud)

我错过了什么?谢谢你的帮助。

the*_*h13 5

simplexml_load_file将 XML 文件解释为 xml 对象,因此 $xml 本身就是一个 xml 对象,访问它的元素只需使用 $xml 对象属性,无需创建新对象 $elm

simplexml_load_file 返回一个 SimpleXMLElement 类的对象,其属性包含 XML 文档中保存的数据,失败时返回 FALSE。

http://php.net/manual/en/function.simplexml-load-file.php