【问题标题】:how to fix this error XML Parsing Error: not well-formed如何修复此错误 XML Parsing Error: not well-formed
【发布时间】:2017-03-01 06:53:04
【问题描述】:

我在 WordPress 上使用 PHP 和 MYSQL,我试图将 Google 地图添加到我的网站,并带有存储在 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 错误。

代码:

<?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", $row['siteID']);
  $newnode->setAttribute("lat", $row['latitude']);
  $newnode->setAttribute("lng", $row['longitude']);

}

echo $dom->saveXML();



?>



<?php
get_footer();
?>

【问题讨论】:

  • 不管怎样,你能看到你在这里创建的XML结构吗?你能打印出来吗?并在这里显示
  • @Rupal 不,当我尝试运行显示所描述错误的代码时,我无法看到创建的 XML
  • 试试 $dom->loadXML('');就在 echo $dom->saveXML(); 之前让我们在这里知道发生了什么
  • 我添加了这一行但仍然是同样的错误
  • 现在改错了XML Parsing Error: undefined entity Location: http://127.0.0.1/wordpress/index.php/locations3/ Line Number 13, Column 1:&lt;link rel="alternate" type="application/rss+xml" title="Lebanon Sites &amp;raquo; Feed" href="http://127.0.0.1/wordpress/index.php/feed/" /&gt; ^

标签: php mysql xml wordpress error-handling


【解决方案1】:

属性名称中不能有空格,这就是您收到错误的原因。

在这一行:

$newnode->setAttribute("site id", $row['siteID']);

改成这样:

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

或者:

$newnode->setAttribute("siteId", $row['siteID']);

【讨论】:

  • 您正在将查询作为 result 进行迭代,但您正在使用 $row 将值放入属性中。@NabilJaroush
  • @NabilJaroush 你能告诉我你的查询结果吗?
  • 我用 $result 替换了 $ 行,但仍然是同样的错误
  • @NabilJaroush 请检查结果数组,否则一切正常,我检查了。您可以在以下位置查看结果:sandbox.onlinephpfunctions.com/code/…
【解决方案2】:

修正后的代码可以是:

<?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();
?>

【讨论】:

    猜你喜欢
    • 2016-03-22
    • 1970-01-01
    • 2018-12-23
    • 2016-08-11
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    相关资源
    最近更新 更多