2016-03-22 43 views
0

我有這樣的錯誤:網址:XML解析錯誤:沒有很好地形成

XML parsing error : not well formed 
Location : http://127.0.0.1/localwebsite/map-control-event-type-criteria.php?=&eP=chose&tP=pub_beer&aP[0]=eating&aT=washington 
Number of line 1, Column 2 : 

的源代碼似乎是正確的:我得到這個:

<?xml version="1.0"?> 
    <markers><marker name="the name" address="the adress" lat="46.187424" lng="8.717437" id="1" town="washington"/></markers> 

頁面看起來的PHP代碼像這樣:

<?php 
    require 'inc/bootstrap.php'; 
    require_once 'inc/db.php'; 

    $db = app::getdatabase(); 

    $evtpar=$_GET['eP']; 
    $typepar=$_GET['tP']; 
    $critpar=$_GET['aP']; 
    $townURL=$_GET['aT']; 

    // some php code to test the validity of URL parameters 

    $dom = new DOMDocument("1.0"); 
    $node = $dom->createElement("markers"); 
    $parnode = $dom->appendChild($node); 


    $result=$db->query("SELECT name.....)->fetchall(); 

    header("Content-type: text/xml"); 
    $i=0; 
    foreach ($result as $row) 
    { 
     $node = $dom->createElement("marker"); 
     $newnode = $parnode->appendChild($node); 
     $newnode->setAttribute("name", $row->name); 
     $newnode->setAttribute("address", $row->address); 
     $newnode->setAttribute("lat", $row->lat); 
     $newnode->setAttribute("lng", $row->lng); 
     $newnode->setAttribute("id", $row->inf_id); 
     $newnode->setAttribute("town", $row->town); 

     $i++; 
    } 

    echo $dom->saveXML(); 

我怎麼知道問題來自哪裏?

是否第1行數表示問題來自URL或以下代碼?

編輯:文件上面的代碼之前:

之前抵達我有以前的代碼的網址:

File1 php: 
    $mapDisplay='EventCritType'; 

    File2 included in File1: 

    <?php if($mapDisplay=='EventCritType'): 
    echo  $Map->mapeventcrittypeview($town,$eventparam,$typeparam,$activityparams,$lat,$lng,13); 
    endif; ?> 

    file3 = Map Class: 

    public function mapeventcrittypeview($town,$eventparam,$typeparam,$activityparams,$lat,$lng,$zoom) 
    { 

     $evtparam=http_build_query(array('eP'=>$eventparam)); 
     $tpparam=http_build_query(array('tP'=>$typeparam)); 
     $actparam=http_build_query(array('aP'=>$activityparams)); 
     $city=http_build_query(array('aT'=>$town)); 

     $url="/localwebsite/map-control-event-type-criteria.php?=&$evtparam&$tpparam&$actparam&$city"; 

     include('inc/map-script.php'); 

    } 

    File4= map-script.php 

    script type="text/javascript"> 

    var infoWindow = new google.maps.InfoWindow; 

    function load() { 
     var map = new google.maps.Map(
     document.getElementById("map"), { 
      center: new google.maps.LatLng(<?= json_encode($lat); ?>, <?= json_encode($lng);?>), 
      zoom: <?php echo json_encode($zoom); ?>, 
      mapTypeId: 'roadmap' 
     }); 

     downloadUrl(<?= json_encode($url); ?>, function(data) { 
     var xml = data.responseXML; 
     var markers = xml.documentElement.getElementsByTagName("marker"); 
     for (var i = 0; i < markers.length; i++) { 
     var name = markers[i].getAttribute("name"); 
     var address = markers[i].getAttribute("address"); 
     var id = markers[i].getAttribute("id"); 
     var town = markers[i].getAttribute("town").toLowerCase(); 
     var point = new google.maps.LatLng(
     parseFloat(markers[i].getAttribute("lat")), 
     parseFloat(markers[i].getAttribute("lng"))); 
     var html = "<b>" + name + "</b> <br/>" + address; 
     createMarker(point, id, town, html, i, map); 

     } 
     }); 
    } 

    .... 

    </script> 

    File5= map-control-event-type-criteria.php 

    <?php 
    require 'inc/bootstrap.php'; 
    require_once 'inc/db.php'; 

    $db = app::getdatabase(); 
    $evtpar=$_GET['eP']; 
    $critpar=$_GET['aP']; 
    $townURL=$_GET['aT']; 

    .... 

回答

1

Does Number of line 1 means that the problem comes from the URL or the following code?

它表示由該URL返回的數據。

當我與XMLlint測試你的代碼,它說:

test.xml:1: parser error : XML declaration allowed only at the start of the document

XML聲明必須是文檔的非常第一件事。

您在它之前有空格,這是不允許的。

+0

Thx @Quentin爲您提供幫助。由於我不是很確定,所以我編輯了我的帖子,其中包含了php代碼的樣子。它是頭(「Content-type:text/xml」);那應該是文檔中的第一件事情? – michltm

+0

@michltm - 在開始輸出XML之前,應該在PHP代碼中。 XML聲明是開始「<?xml」的事情。刪除之前的所有空格。 – Quentin

+0

好的我會盡量找到這些空間,一旦找到它們就會回到答案。 – michltm

-1

嘗試使用標題:

<?xml version="1.0" encoding="UTF-8"?> 

如果那不能解決問題,你可以查看代碼,如果你把你的代碼我可以幫你。

+0

UTF-8是默認值。爲什麼要明確指出它的幫助? – Quentin

+0

因爲我嘗試在XML驗證程序中處理XML,但沒有此標記,驗證程序不驗證XML –

+0

然後驗證程序中斷:https://www.w3.org/TR/xml/#sec-prolog-dtd – Quentin

相關問題