Tôi bị kẹt với XML và Python. Nhiệm vụ rất đơn giản nhưng tôi không thể giải quyết nó cho đến nay và chi tiêu trong thời gian dài đó. Tôi đến đây để được tư vấn cách giải quyết nó bằng vài dòng.Cách xóa các phần tử khỏi XML bằng cách sử dụng Python
Cảm ơn bạn đã trợ giúp với việc vượt qua cây. Tôi luôn luôn kết thúc với quá nhiều hoặc quá ít yếu tố. Các yếu tố có thể được lồng nhau mà không có giới hạn. Ví dụ được đưa ra chỉ là một ví dụ. Tôi sẽ chấp nhận bất kỳ giải pháp, không kén chọn về dom, minidom, sax, bất cứ điều gì ..
Tôi có một tập tin XML tương tự như thế này:
<root>
<elm>
<elm>Common content</elm>
<elm xmlns="http://example.org/ns">
<elm lang="en">Content EN</elm>
<elm lang="cs">žluťoučký koníček</elm>
</elm>
<elm xml:id="abc123">Common content</elm>
<elm lang="en">Content EN</elm>
<elm lang="cs">Content CS</elm>
<elm lang="en">
<elm>Content EN</elm>
<elm>Content EN</elm>
</elm>
<elm lang="cs">
<elm>Content CS</elm>
<elm>Content CS</elm>
</elm>
</elm>
</root>
Những gì tôi cần - phân tích cú pháp XML và viết mới tập tin. Tệp mới phải chứa tất cả các phần tử cho ngôn ngữ và phần tử đã cho mà không có thuộc tính lang
.
Đối với ngôn ngữ "cs" các tập tin đầu ra nên containt này:
<root>
<elm>
<elm>Common content</elm>
<elm xmlns="http://example.org/ns">
<elm lang="cs">žluťoučký koníček</elm>
</elm>
<elm xml:id="abc123">Common content</elm>
<elm lang="cs">Content CS</elm>
<elm lang="cs">
<elm>Content CS</elm>
<elm>Content CS</elm>
</elm>
</elm>
</root>
Nếu bạn có thể làm cho nó để bỏ qua các thuộc tính lang
trong file mới, thậm chí tốt hơn. Nhưng điều đó không quan trọng.
UPDATE1: Đã thêm các ký tự unicode và thuộc tính không gian tên.
CẬP NHẬT 2: Sử dụng Python 2.5, thư viện chuẩn được ưu tiên.
'Đối với ngôn ngữ" en ", tệp đầu ra phải làm rõ điều này:' Tôi giả sử bạn có ý nói rằng đầu ra đã cho là cho ngôn ngữ "cs"? – LarsH
@LarsH: Tôi đã cập nhật câu hỏi để thêm một số ký tự unicode tại đó. Bạn nói đúng, cần phải viết: cho ngôn ngữ "cs". Sẽ thay đổi nó. – dwich