2010-12-28 30 views
20

Khi tôi sử dụng mã bên dưới và phân tích cú pháp xml cục bộ, nó hoạt động tốt nhưng khi tải lên cùng một tập lệnh tại máy chủ, nó hiển thị lỗi.Lỗi trên dòng 2 ở cột 1: Nội dung bổ sung ở cuối tài liệu

Lưu ý: Tôi đã truy xuất $lng$lat từ chuỗi truy vấn và hoạt động tốt tại địa phương.

$lng=$_GET['lng']; 
$lat=$_GET['lat']; 
$conn=new LoginSystem(); 
$conn->connect(); 
$dom = new DOMDocument("1.0"); 

$query="select catch_id,catch_details,image from mycatch where longitude='$lng' AND latitude='$lat'"; 
$result = mysql_query($query); 

if (!$result) { 
    die("Invalid query: " . mysql_error()); 
} 

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

// Iterate through the rows, adding XML nodes for each 
while ($row = @mysql_fetch_assoc($result)){ 
    $node = $dom->createElement("mycatch"); 
    $node = $dom->appendChild($node); 
foreach ($row as $fieldname => $fieldvalue) { 
     $child = $dom->createElement($fieldname); 
    $child = $node->appendChild($child); 
    $value = $dom->createTextNode($fieldvalue); 
    $value = $child->appendChild($value); 
    } 
} 

$conn->disconnect(); 
$xml_string = $dom->saveXML(); 
echo $xml_string; 

Trên máy chủ, nó sẽ phát ra lỗi này. Và tài liệu cũng là trống .....

Trang này chứa các lỗi sau đây:
lỗi trên dòng 2 ở cột 1: Nội dung tắm ở phần cuối của tài liệu Dưới đây là một rendering of the page đến lỗi đầu tiên.

+0

Ngôn ngữ này là gì? –

+0

mã này là ngôn ngữ php – hunter

Trả lời

3

Trên mỗi vòng lặp của tập kết quả, bạn đang phụ thêm một phần tử gốc mới vào tài liệu, tạo một tài liệu XML như thế này:

<?xml version="1.0"?> 
<mycatch>...</mycatch> 
<mycatch>...</mycatch> 
... 

Một tài liệu XML chỉ có thể có một phần tử gốc, đó là lý do tại sao lỗi này cho biết có "nội dung bổ sung". Tạo một phần tử gốc duy nhất và thêm tất cả các yếu tố mycatch đó:

$root = $dom->createElement("root"); 
$dom->appendChild($root); 
// ... 
while ($row = @mysql_fetch_assoc($result)){ 
    $node = $dom->createElement("mycatch"); 
    $root->appendChild($node); 
38

Tôi nghĩ rằng bạn đang tạo ra một tài liệu mà trông như thế này:

<mycatch> 
    .... 
</mycatch> 
<mycatch> 
    .... 
</mycatch> 

Đây không phải là một tài liệu XML hợp lệ vì nó có nhiều hơn một phần tử gốc. Bạn phải có một yếu tố cấp cao duy nhất, như trong

<mydocument>  
    <mycatch> 
     .... 
    </mycatch> 
    <mycatch> 
     .... 
    </mycatch> 
    .... 
</mydocument> 
+2

Nhận xét tuyệt vời. Làm thế nào TF tôi đã quên điều này? :( – ilight

+0

Bạn là thiên tài. – ViruMax

3

Bạn có thể có đầu ra (có thể lỗi/debug đầu ra) rằng trước cuộc gọi của bạn để

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

Do đó, nội dung đang được chuyển giao cho trình duyệt không phải là "xml" ... đó là những gì thông báo lỗi đang cố gắng cho bạn biết (ít nhất đó là trường hợp của tôi và tôi đã có thông báo lỗi tương tự như bạn đã mô tả).

5

Vấn đề là chuỗi kết nối cơ sở dữ liệu, một trong các tham số hàm kết nối cơ sở dữ liệu MySQL của bạn không chính xác, vì vậy có một thông báo lỗi trong đầu ra trình duyệt, chỉ cần bấm chuột phải vào trang đầu ra và xem mã nguồn html bạn sẽ thấy dòng lỗi bằng dữ liệu đầu ra XML đúng (tệp). Tôi đã có cùng một vấn đề và giải pháp trên hoạt động hoàn hảo.

Các vấn đề liên quan