2016-03-22 3 views
0

У меня есть эта ошибка:URL не очень хорошо образован

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

Как я могу узнать, откуда возникла проблема?

0 Количество строк: 1 Это значит, что проблема возникла из-за неправильного адреса или кода.

EDIT: Файлы перед выше код:

Перед прибытием в 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 - Это должно быть в коде PHP, прежде чем вы начнете выводить XML вообще. Объявление XML - это начало ' Quentin

+0

ok Я попытаюсь найти эти пространства и вернусь к ответу, как только я их найду. – michltm

-1

Try использовать заголовок:

<?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

Смежные вопросы