使用simplexml_load_string进行XML解析不起作用

时间:2017-03-10 08:55:24

标签: php xml parsing simplexml simplexml-load-string

我试图解析XML文件中的一些数据。我可以使用下面的脚本从XML文件成功解析数据。

Html.DropDownList("Adresses","Select Address")

此脚本运行正常。但我还需要使用simplexml_load_string()函数来处理此解析。我将相同的XML内容转换为$ response变量。我正在使用这个脚本:

<?php
libxml_use_internal_errors(true);
$sxe = simplexml_load_file('xml/montreal.xml');
if ($sxe === false) {
   foreach(libxml_get_errors() as $error) {
    echo $error->message . PHP_EOL;
}
} else {
$sxe->registerXPathNamespace('h', 'http://schemas.example.com/webservices/hotelsdkfs');
$hotels = $sxe->xpath('//h:Hotel');
$rowF = '<li><div class="title">%s</div><div class="artist">by %s</div></li>'. PHP_EOL;
foreach ($hotels as $hotel) {
    $attr = $hotel->attributes();
    printf($rowF, $attr['name'], $attr['brandId']);
}   
}
?>

但它不起作用。显示错误&#34;期望开始标记,&#39;&lt;&#39;找不到&#34;。我怎么解决这个问题?

我的XML是:

<?php
libxml_use_internal_errors(true);

$sxe = simplexml_load_string($response);
if ($sxe === false) {
   foreach(libxml_get_errors() as $error) {
    echo $error->message . PHP_EOL;
}
} else {
$sxe->registerXPathNamespace('h', 'http://schemas.example.com/webservices/hotelsdkfs');
$hotels = $sxe->xpath('//h:Hotel');
$rowF = '<li><div class="title">%s</div><div class="artist">by %s</div></li>'. PHP_EOL;
foreach ($hotels as $hotel) {
    $attr = $hotel->attributes();
    printf($rowF, $attr['name'], $attr['brandId']);
}   
}
?>

请帮忙。谢谢。

0 个答案:

没有答案