2011-11-21 23 views
5

Vì vậy, tôi có XML này doc:Bao gồm một URL với chuỗi truy vấn trong một tài liệu XML

<?xml version="1.0" encoding="UTF-8"?> 
<Root> 
    <Item> 
     <URL>http://www.mysite.com/page?id=1</URL> 
    </Item> 
</Root> 

Khi tôi cố gắng và xem tài liệu, tôi nhận được một lỗi nói:

XML Parsing Error: not well-formed

tại = đăng nhập vào chuỗi truy vấn. Tôi đã thử thay đổi ký hiệu = thành %3D, nhưng tôi gặp lỗi tương tự tại %

Tôi phải làm gì ở đây?

+0

Dù XML phân tích các xác nhận quyền sở hữu chưa được định dạng tốt, nó đã phá vỡ n, bởi vì nó được hình thành tốt. Hãy thử bất kỳ trình xác nhận trực tuyến nào và tất cả họ đều sẽ nói cùng một điều "Được tạo thành, không có lỗi" – Mecki

Trả lời

12

Bạn có thể thử <URL><![CDATA[http://www.mysite.com/page?id=1]]></URL>

Tất cả các văn bản trong một tài liệu XML sẽ được phân tích bởi các phân tích cú pháp. Nhưng văn bản bên trong phần CDATA sẽ bị trình phân tích cú pháp bỏ qua. bạn có thể tìm thấy thêm here.

+0

Xin chào, nó đã làm việc cho tôi, cảm ơn anh. –

1

thử này <URL><![CDATA[http://www.mysite.com/page?id=1]]></URL>

14

Khi bạn cung cấp, XML được định dạng tốt. Bạn không có gì để trốn thoát trong đó. Có thể bạn có sự cố mã hóa trong tệp nguồn của mình. Để biết thông tin, 2 ký tự mà bạn phải chạy trốn trong XML là:

& in &amp; 
< in &lt; 

nhân vật bạn có thể thoát ra trong các thuộc tính giá trị (tùy theo cú pháp bạn sử dụng cho các thuộc tính: attr='value' hoặc attr="value"):

" in &quot; 
' in &apos; 

Tùy thuộc vào ngữ cảnh, ký tự cuối cùng có thể được thoát:

> in &gt; 
+1

Đây là cách phù hợp. CDATA nên tránh. –

+0

Tại sao CDATA nên tránh? – Adam

+0

@Adam: phần CDATA có nhược điểm đối với một số trường hợp sử dụng như lồng CDATA vào CDATA (xem [ở đây] (https://en.wikipedia.org/wiki/CDATA#Nesting)). Điều đó có nghĩa rằng nếu bạn muốn chèn, ví dụ, XML tùy ý trong một phần CDATA (tôi đã gặp những người đã thử điều đó), việc triển khai thực hiện không đơn giản. –

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