Php 如何修复此错误XML解析错误:格式不正确

Php 如何修复此错误XML解析错误:格式不正确,php,mysql,xml,wordpress,error-handling,Php,Mysql,Xml,Wordpress,Error Handling,我在WordPress上使用PHP和MYSQL,试图在我的网站上添加一个谷歌地图,并在MYSQL数据库中存储标记 我正在尝试使用$wpdb class和DOM检索所选数据 但系统显示此错误: XML Parsing Error: not well-formed Location: http://127.0.0.1/wordpress/?page_id=105&preview=true Line Number 13, Column 15: if ( query &&

我在WordPress上使用PHP和MYSQL,试图在我的网站上添加一个谷歌地图,并在MYSQL数据库中存储标记

我正在尝试使用$wpdb classDOM检索所选数据

但系统显示此错误:

XML Parsing Error: not well-formed
Location: http://127.0.0.1/wordpress/?page_id=105&preview=true
Line Number 13, Column 15:      if ( query && query.indexOf( 'preview=true' ) !== -1 ) {
----------------------------^
我的代码中的错误在哪里? 我不明白如何修复这个XML错误

代码:

createElement(“标记”);
$parnode=$dom->appendChild($node);
//搜索站点坐标表中的行
$query=$wpdb->get_结果(“从站点_坐标选择*);
标题(“内容类型:text/xml”);
//遍历行,为每个行添加XML节点
foreach($queryas$result){
$node=$dom->createElement(“标记”);
$newnode=$parnode->appendChild($node);
$newnode->setAttribute(“站点id”,$row['siteID']);
$newnode->setAttribute(“lat”,$row['latitude']);
$newnode->setAttribute(“lng”,$row['longitude']);
}
echo$dom->saveXML();
?>

属性名称中永远不能有空格,这就是出现错误的原因

在这一行:

$newnode->setAttribute("site id", $row['siteID']);
更改如下:

$newnode->setAttribute("site_id", $row['siteID']);
或:

更正的代码可以是:

<?php
        /*
        Template Name: MAP2
        */

        get_header();
  ?>
<?php
global $wpdb;
// Get parameters from URL
$center_lat = $_GET["lat"];
$center_lng = $_GET["lng"];
// Start XML file, create parent node
$dom = new DOMDocument("1.0");  
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);



// Search the rows in the site_coordinates table
$query = $wpdb->get_results("select * from site_coordinates");


header("Content-type: text/xml");

// Iterate through the rows, adding XML nodes for each
foreach ($query as $result){
  $node = $dom->createElement("marker");
  $newnode = $parnode->appendChild($node);
  $newnode->setAttribute("site id", $result['siteID']);
  $newnode->setAttribute("lat", $result['latitude']);
  $newnode->setAttribute("lng", $result['longitude']);

}

echo $dom->saveXML();

?>

<?php
get_footer();
?>

createElement(“标记”);
$parnode=$dom->appendChild($node);
//搜索站点坐标表中的行
$query=$wpdb->get_结果(“从站点_坐标选择*);
标题(“内容类型:text/xml”);
//遍历行,为每个行添加XML节点
foreach($queryas$result){
$node=$dom->createElement(“标记”);
$newnode=$parnode->appendChild($node);
$newnode->setAttribute(“站点id”,$result['siteID']);
$newnode->setAttribute(“lat”,$result['latitude']);
$newnode->setAttribute(“lng”,$result['longitude']);
}
echo$dom->saveXML();
?>

无论如何,您能看到您在这里创建的XML结构吗?你能把它打印出来吗?展示here@Rupal不,当我尝试运行代码时,我无法看到创建的XML,它显示所描述的错误try$dom->loadXML(“”);就在echo$dom->saveXML()之前;让我们知道发生了什么我添加了这一行,但仍然是相同的错误现在错误已更改
XML解析错误:未定义的实体位置:http://127.0.0.1/wordpress/index.php/locations3/ 第13行,第1列:^
您正在迭代查询作为结果,但使用$row将值放入属性中@NabilJaroush@NabilJaroush您能给我看一下您的查询结果吗?我用$result替换了$row,但仍然相同error@NabilJaroush请检查结果数组,否则一切正常,我已检查。您可以在以下位置看到结果:
$newnode->setAttribute("siteId", $row['siteID']);
<?php
        /*
        Template Name: MAP2
        */

        get_header();
  ?>
<?php
global $wpdb;
// Get parameters from URL
$center_lat = $_GET["lat"];
$center_lng = $_GET["lng"];
// Start XML file, create parent node
$dom = new DOMDocument("1.0");  
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);



// Search the rows in the site_coordinates table
$query = $wpdb->get_results("select * from site_coordinates");


header("Content-type: text/xml");

// Iterate through the rows, adding XML nodes for each
foreach ($query as $result){
  $node = $dom->createElement("marker");
  $newnode = $parnode->appendChild($node);
  $newnode->setAttribute("site id", $result['siteID']);
  $newnode->setAttribute("lat", $result['latitude']);
  $newnode->setAttribute("lng", $result['longitude']);

}

echo $dom->saveXML();

?>

<?php
get_footer();
?>