2010-08-19 30 views
7

Tôi đang phân tích cú pháp tệp XML không tuân thủ (định dạng Sphinx's xmlpipe2) và muốn trình phân tích cú pháp của LXML bỏ qua thực tế là có các tiền tố không gian tên chưa được giải quyết.Có một chuyển đổi để bỏ qua các tiền tố không gian tên không xác định trong LXML không?

Một ví dụ về Sphinx XML:

<sphinx:schema> 
    <sphinx:field name="subject"/> 
    <sphinx:field name="content"/> 
    <sphinx:attr name="published" type="timestamp"/> 
    <sphinx:attr name="author_id" type="int" bits="16" default="1"/> 
</sphinx:schema> 

Tôi nhận thức được thông qua một tùy chọn từ khóa phân tích cú pháp để thử và khôi phục lại XML bị hỏng, ví dụ

parser = etree.XMLParser(recover=True) 
tree = etree.parse('sphinxTest.xml', parser) 

nhưng ở trên không bỏ qua tiền tố, nó sẽ loại bỏ nó.

Tôi có thể tạo mục tiêu bổ sung vào tiền tố đã loại bỏ, ví dụ:

parser = etree.XMLParser(target = AddPrefix()) 

trong đó AddPrefix() là lớp thêm tiền tố vào mỗi thẻ thuộc tính. Có cách nào đơn giản hơn để thực hiện việc này không? Cuối cùng tôi muốn lập trình viết định dạng xmlpipe2 của Sphinx một cách sạch sẽ.

Trả lời

1

Thêm xmlns:sphinx="bogus" vào phần tử gốc.

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