Tôi phải phân tích cú pháp tệp XML 1Gb với cấu trúc như bên dưới và trích xuất văn bản trong thẻ "Tác giả" và "Nội dung":sử dụng lxml và iterparse() để phân tích tệp XML lớn (+ - 1Gb)
<Database>
<BlogPost>
<Date>MM/DD/YY</Date>
<Author>Last Name, Name</Author>
<Content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas dictum dictum vehicula.</Content>
</BlogPost>
<BlogPost>
<Date>MM/DD/YY</Date>
<Author>Last Name, Name</Author>
<Content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas dictum dictum vehicula.</Content>
</BlogPost>
[...]
<BlogPost>
<Date>MM/DD/YY</Date>
<Author>Last Name, Name</Author>
<Content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas dictum dictum vehicula.</Content>
</BlogPost>
</Database>
Cho đến nay tôi đã thử hai thứ: i) đọc toàn bộ tệp và thực hiện nó với .find (xmltag) và ii) phân tích cú pháp tệp xml bằng lxml và iterparse(). Tùy chọn đầu tiên tôi có nó hoạt động, nhưng nó rất chậm. Tùy chọn thứ hai tôi đã không quản lý để có được nó ra khỏi mặt đất.
Dưới đây là một phần của những gì tôi có:
for event, element in etree.iterparse(path_to_file, tag="BlogPost"):
if element.tag == "BlogPost":
print element.text
else:
print 'Finished'
Kết quả của việc đó là chỉ khoảng trống, không có văn bản trong đó.
Tôi phải làm điều gì đó sai, nhưng tôi không thể hiểu được. Ngoài ra, trong trường hợp nó không đủ rõ ràng, tôi khá mới với python và đây là lần đầu tiên tôi sử dụng lxml. Hãy giúp tôi!
Vâng, các thẻ 'BlogPost' dường như không chứa bất kỳ văn bản nào trong đó. –
Đúng. Điều gì sẽ là cách để có được tất cả mọi thứ đó là giữa việc mở và đóng BlogPost tag? – mvime
Nếu bạn chỉ cần tất cả thông tin từ bên trong thẻ 'BlogPost', hãy làm theo lời khuyên của andrew. Nếu bạn muốn định dạng HTML, hãy áp dụng 'lxml.etree.tostring()' cho chúng. –