2012-07-20 33 views
12

Tôi đang sử dụng Java và tôi đang cố gắng lấy tài liệu XML từ một số liên kết http. Mã tôi đang sử dụng là:Lỗi nghiêm trọng: 1: 1: Nội dung không được phép trong prolog

URL url = new URL(link); 

HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
connection.setRequestMethod("GET"); 
connection.connect(); 
Document doc = null; 

CountInputStream in = new CountInputStream(url.openStream()); 
doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in); 

Đừng chú ý tại CountInputStream, đó là một số lớp đặc biệt hoạt động như luồng nhập thông thường.

Sử dụng đoạn mã trên, đôi khi tôi đã nhận lỗi Fatal Error :1:1: Content is not allowed in prolog. Tôi cho rằng đó là một cái gì đó để làm với định dạng xấu của xml, nhưng tôi không có ý tưởng làm thế nào để sửa chữa nó.

+1

có thể trùng lặp của [Java phân tích cú pháp tài liệu XML cho "Nội dung không được phép trong prolog". lỗi] (http://stackoverflow.com/questions/2599919/java-parsing-xml-document-gives-content-not-allowed-in-prolog-error) –

+0

Cũng như tôi hiểu chủ đề bạn đang đề cập đến là về đọc xml từ đĩa. Trong trường hợp của tôi tôi không có xml trên đĩa, tôi chỉ có một số chuỗi (liên kết) và tôi đã nhận lỗi trước khi tôi nhận được tập tin xml ... – guest86

+0

Bạn có thể cung cấp URL được đề cập không? Nguyên nhân có khả năng nhất của việc này là phản hồi không đúng định dạng, do đó, hãy xem điều đó sẽ có giá trị. – MvG

Trả lời

18

Tôi quay nhận xét của tôi đến một câu trả lời, vì vậy nó có thể được chấp nhận và câu hỏi này không còn vẫn còn bỏ ngỏ.

Nguyên nhân có nhiều khả năng nhất là phản hồi không đúng định dạng, bao gồm các ký tự trước số <?xml …> ban đầu. Vì vậy, hãy xem tài liệu như được chuyển qua HTTP và sửa lỗi này ở phía máy chủ.

+0

Những nhân vật kỳ quặc bắt đầu của tập tin được BOM (byte để đánh dấu), lý tưởng BOM không nên có mặt với utf-8 mã hóa như java thất bại trong việc phân tích cú pháp ngoại lệ như vậy và đưa ra lỗi trên – techExplorer

6

Chắc chắn có một số ký tự lạ (ví dụ: BOM) hoặc khoảng trắng nào đó trước phần mở đầu XML (<?xml ...?>)?

+1

Trong trường hợp của tôi, tôi đã thêm sai ý kiến ​​trong xml bằng các comment kiểu java . ví dụ. Thay vì sử dụng tôi đã sử dụng/* */loại bỏ mà cố định tương tự cho tôi – Chaitanya

0

người nên đánh dấu comment Johannes Weiß là câu trả lời cho câu hỏi này. Đó là lý do chính xác tại sao các tài liệu xml không thể được nạp trong một lớp DOM Document.

http://en.wikipedia.org/wiki/Byte_order_mark

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