如何在php中加载xml文件,以便我可以使用xpath?

时间:2012-03-16 23:18:15

标签: php xml xpath

我的php有问题, 如果我在下面实现这个代码,那么什么都不会发生。

$filename = "/opt/olat/olatdata/bcroot/course/85235053647606/runstructure.xml";
if (file_exists($filename)) {
 $xml = simplexml_load_file($filename, 'SimpleXMLElement', LIBXML_NOCDATA);
 // $xpath = new DOMXPath($filename);
}
$doc = new DOMDocument();
$doc->loadXML($xml);
$xpath = new DOMXpath($doc);

$res = $xpath->query('/org.olat.course.Structure/rootNode/children/org.olat.course.nodes.STCourseNode/shortTitle');

foreach ($res as $entry) {
    echo "{$entry->nodeValue}<br/>";
}

如果我使用$ filename

的内容更改内容中$ xml的内容
$xml = '<org.olat.course.Structure><rootNode class="org.olat.course.nodes.STCourseNode"> ... ';
     

然后它工作,所以我认为加载xml文件的方法有问题,   我也尝试将xml文件作为Domdocument加载,但它也不会工作。   在这两种情况下,如果我通过xml收集xml数据,它确实有效   例如,这工作

     

echo $ Course_name = $ xml-&gt; rootNode-&gt; longTitle;

1 个答案:

答案 0 :(得分:2)

loadXML字符串作为输入,而不是simplexml_load_file的返回值。只需使用file_get_contents将文件的(完整)内容作为 string

获取