2012-07-11 30 views
11

Tôi đang sử dụng Python xml.etree.ElementTree để thực hiện phân tích cú pháp XML trên một tệp. Tuy nhiên, tôi có được điều này lỗi giữa đường thông qua các tài liệu:Phân tích cú pháp XML trong python: expaterror không được định dạng tốt

xml.parsers.expat.ExpatError: not well-formed (invalid token): line X, column Y 

Vì vậy, tôi đi đến dòng X, cột Y trong vim và tôi thấy một dấu và (&) với nền đỏ nổi bật. Điều đó có nghĩa là gì?

Ngoài ra hai ký tự đứng trước nó là >>, vì vậy có thể có điều gì đó đặc biệt về >>&?

Bất kỳ ai biết cách sửa lỗi này?

Trả lời

12

& là một ký tự đặc biệt trong XML, được sử dụng cho các thực thể ký tự. Nếu XML của bạn có & hãy tự ngồi đó, không phải là một phần của thực thể như & hoặc ѐ hoặc tương tự, thì XML không hợp lệ.

+0

Tôi nghĩ vấn đề có thể là tôi có một yếu tố đa dòng (string). Về cơ bản cho một yếu tố này tôi đã làm một grep (regex) | đầu -5, để lấy lại 5 dòng, sau đó dán nó vào tệp dưới dạng phần tử xml. Tôi sẽ làm tốt hơn việc tạo ra 5 yếu tố riêng biệt bằng cách nào đó? – JDS

+0

Nó không phải là vấn đề có bao nhiêu yếu tố trong đó, nó là vấn đề của những nhân vật trong đó. Bạn không thể tự đặt ký tự & & nbsp; trong một tài liệu XML. Bạn cần phải thoát khỏi nó bằng cách thay thế nó bằng '&'. – BrenBarn

+0

một số văn bản và ký tự đó không tốt cho bạn? Ngoài ra tôi đang đọc trong những dòng này từ nhiều tệp khác nhau, vì vậy tôi không chắc làm cách nào để tự động thoát chúng (đọc từ tập lệnh bash bằng grep và sau đó được xuất ra tệp) – JDS

0

tôi giải quyết nó bằng cách sử dụng yattag thay

from yattag import indent 
print indent(xml_string.encode('utf-8')) 
Các vấn đề liên quan