Trích tóm lược mã, phiên bản của ElementTree.py
tôi sử dụng chứa những điều sau đây trong một phương pháp _write
:
write('<' + tagname)
...
if node.text or len(node): # this line is literal
write('>')
...
write('</%s>' % tagname)
else:
write(' />')
Chỉ đạo chương trình truy cập Tôi tạo ra như sau:
class AlwaysTrueString(str):
def __nonzero__(self): return True
true_empty_string = AlwaysTrueString()
Sau đó tôi đặt node.text = true_empty_string
trên các nút ElementTree đó, nơi tôi muốn một thẻ đóng mở chứ không phải là một thẻ tự đóng.
Bằng cách "chỉ đạo bộ đếm chương trình" Tôi có nghĩa là xây dựng một bộ đầu vào — trong trường hợp này là một đối tượng có kiểm tra sự thật hơi tò mò — với phương pháp thư viện sao cho phương pháp thư viện duyệt qua biểu đồ luồng điều khiển của nó Tôi muốn nó. Điều này là vô cùng giòn: trong một phiên bản mới của thư viện, hack của tôi có thể phá vỡ - và bạn có lẽ nên đối xử với "có thể" là "gần như được bảo đảm". Nói chung, không phá vỡ rào cản trừu tượng. Nó chỉ làm việc cho tôi ở đây.
Nguồn
2015-06-04 16:07:34
Thật không may, không có trình phân tích cú pháp XML Fortran nào khác để sử dụng, vì vậy đây là lựa chọn duy nhất của chúng tôi. Cảm ơn! – tpg2114
Bất kỳ cơ hội nào có cách để duy trì trường hợp của thẻ? Rõ ràng trường hợp nhạy cảm cũng là một vấn đề và 'html' không giữ nguyên trường hợp ... – tpg2114
@ tpg2114: không, xin lỗi. –