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

如何在php中加载xml文件,以便在其上使用xpath?,php,xml,xpath,Php,Xml,Xpath,我对php有一个问题, 如果我在下面实现这段代码,那么什么也不会发生 $filename=“/opt/olat/olatdata/bcroot/course/8523505364760/runstructure.xml”; 如果(文件_存在($filename)){ $xml=simplexml\u load\u文件($filename,'simplexmlement',LIBXML\u NOCDATA); //$xpath=newdomxpath($filename); } $doc=新的DO

我对php有一个问题, 如果我在下面实现这段代码,那么什么也不会发生

$filename=“/opt/olat/olatdata/bcroot/course/8523505364760/runstructure.xml”;
如果(文件_存在($filename)){
$xml=simplexml\u load\u文件($filename,'simplexmlement',LIBXML\u NOCDATA);
//$xpath=newdomxpath($filename);
}
$doc=新的DOMDocument();
$doc->loadXML($xml);
$xpath=新的DOMXpath($doc);
$res=$xpath->query('/org.olat.course.Structure/rootNode/children/org.olat.course.nodes.STCourseNode/shortTitle');
foreach($res作为$entry){
echo“{$entry->nodeValue}
”; }
如果我用$filename的内容更改内容中$xml的内容

$xml='…';
然后它工作了,所以我认为xml文件的加载方法有问题, 我还尝试将xml文件作为Domdocument加载,但它也不起作用。 在这两种情况下,如果我通过xml收集xml数据,它都会起作用 例如,这是有效的

echo$Course\u name=$xml->rootNode->longTitle


loadXML
将字符串作为输入,而不是
simplexml\u load\u文件的返回值。只需使用
file\u get\u contents
以字符串的形式获取文件的(完整)内容

即可-谢谢。我搜索了两个多小时,您已经告诉了Answare,再次感谢:)
$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/>";
}
$xml = '<org.olat.course.Structure><rootNode class="org.olat.course.nodes.STCourseNode"> ... ';