Tôi nghĩ bạn không nên xem xét bất kỳ triển khai trình phân tích cú pháp cụ thể nào. API Java để xử lý XML cho phép bạn sử dụng bất kỳ triển khai trình phân tích cú pháp tuân thủ nào theo cách tiêu chuẩn. Mã phải dễ mang theo hơn nhiều và khi bạn nhận ra rằng một trình phân tích cú pháp cụ thể đã quá cũ, bạn có thể thay thế nó bằng một mã khác mà không thay đổi một dòng mã của bạn (nếu bạn làm đúng).
Về cơ bản, có ba cách xử lý XML theo cách tiêu chuẩn:
- SAX Đây là API đơn giản nhất. Bạn đọc XML bằng cách định nghĩa một lớp Handler nhận dữ liệu bên trong các phần tử / thuộc tính khi XML được xử lý theo cách nối tiếp. Sẽ nhanh hơn và đơn giản hơn nếu bạn chỉ có kế hoạch đọc một số thuộc tính / yếu tố và / hoặc viết lại một số giá trị (trường hợp của bạn).
- DOM Phương thức này tạo một cây đối tượng cho phép bạn sửa đổi / truy cập nó một cách ngẫu nhiên để tốt hơn cho việc xử lý và xử lý XML phức tạp.
- StAX Đây là ở giữa con đường giữa SAX và DOM. Bạn chỉ cần viết mã để lấy dữ liệu từ trình phân tích cú pháp mà bạn quan tâm khi nó được xử lý.
Hãy quên các API độc quyền như JDOM hoặc Apache (tức là Apache Xerces XMLSerializer ) vì sẽ ràng buộc bạn với một triển khai cụ thể có thể phát triển kịp thời hoặc mất khả năng tương thích ngược, điều này sẽ khiến bạn thay đổi mã trong tương lai khi bạn muốn nâng cấp lên trong tương lai một phiên bản mới của JDOM hoặc bất kỳ trình phân tích cú pháp nào bạn sử dụng. Nếu bạn tuân thủ API tiêu chuẩn Java (sử dụng các nhà máy và giao diện), mã của bạn sẽ có tính mô đun và duy trì hơn nhiều.
Không cần phải nói rằng tất cả (tôi chưa kiểm tra tất cả, nhưng tôi gần như chắc chắn) các trình phân tích cú pháp được đề xuất tuân thủ triển khai JAXP để về mặt kỹ thuật bạn có thể sử dụng tất cả, bất kể đó là gì.