2012-11-14 28 views
9

Tôi đang học ElementTree trong python. Mọi thứ dường như tốt, trừ khi tôi cố gắng để phân tích các tập tin xml với tiền tố:Python ElementTree phân tích cú pháp lỗi liên kết tiền tố

test.xml:

<?xml version="1.0"?> 
<abc:data> 
    <abc:country name="Liechtenstein" rank="1" year="2008"> 
    </abc:country> 
    <abc:country name="Singapore" rank="4" year="2011"> 
    </abc:country> 
    <abc:country name="Panama" rank="5" year="2011"> 
    </abc:country> 
</abc:data> 

Khi tôi cố gắng phân tích cú pháp xml:

import xml.etree.ElementTree as ET 
tree = ET.parse('test.xml') 

Tôi đã nhận lỗi sau:

xml.etree.ElementTree.ParseError: unbound prefix: line 2, column 0 

Tôi có cần chỉ định thứ gì đó để phân tích cú pháp tệp xml có tiền tố không ?

+3

ngắn gọn là bạn có một không gian tên bị thiếu cho abc. hãy xem: http://stackoverflow.com/a/4999510/1107807 –

Trả lời

11

Thêm không gian tên abc vào tệp xml của bạn.

<?xml version="1.0"?> 
<abc:data xmlns:abc="your namespace"> 
+14

Nhưng khi XML của tôi không thay đổi thì tôi chỉ cần phân tích cú pháp đó? –

+1

Tôi thứ hai câu hỏi/bình luận từ @Mark Allen! Tôi đang gặp vấn đề tương tự. Chắc chắn trên cơ sở từng trường hợp một người có thể chỉnh sửa các tập tin, nhưng tôi có nhiều tập tin xml lớn (và nonuniform). Chắc chắn có một cách để giải quyết vấn đề này – dnh37