Tôi có tệp xml lớn (1 Gig). Tôi muốn di chuyển một số phần tử (mục nhập) vào một tệp khác có cùng tiêu đề và thông số kỹ thuật.Làm thế nào để nói lxml.etree.tostring (phần tử) không viết các không gian tên trong python?
Hãy nói rằng các tập tin ban đầu có chứa cụm từ này với thẻ <to_move>
:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE some SYSTEM "some.dtd">
<some>
...
<to_move date="somedate">
<child>some text</child>
...
...
</to_move>
...
</some>
tôi sử dụng lxml.etree.iterparse để lặp qua các tập tin. Hoạt động tốt. Khi tôi tìm thấy những phần tử với thẻ <to_move>
, hãy giả sử nó được lưu trữ trong biến element
tôi làm
new_file.write(etree.tostring(element))
Nhưng kết quả này trong
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE some SYSTEM "some.dtd">
<some>
...
<to_move xmlns:="some" date="somedate"> # <---- Here is the problem. I don't want the namespace.
<child>some text</child>
...
...
</to_move>
...
</some>
Vì vậy, câu hỏi là: Làm thế nào để nói với etree.tostring () không viết xmlns:="some"
. Điều này có thể không? Tôi đã đấu tranh với tài liệu api-lxml.etree, nhưng tôi không thể tìm thấy câu trả lời thỏa mãn.
Đây là những gì tôi tìm thấy cho etree.trostring
:
tostring(element_or_tree, encoding=None, method="xml",
xml_declaration=None, pretty_print=False, with_tail=True,
standalone=None, doctype=None, exclusive=False, with_comments=True)
Serialize một yếu tố để một đại diện chuỗi được mã hóa của cây XML của nó.
Với tôi, mọi thông số của tostring()
dường như không hữu ích. Bất kỳ đề nghị hoặc sửa chữa?
Tôi hiểu, ý tưởng tuyệt vời * đằng sau không gian tên. :-) Nhưng trong trường hợp đặc biệt này của tôi không có lợi nhuận trong nó cả. Điều đó không có nghĩa là tôi sẽ luôn bỏ qua chúng. :-) Cảm ơn! – Aufwind