Làm cách nào để xóa thuộc tính class = ”Something” trong Xstream.Xstream: loại bỏ thuộc tính lớp
Tôi sử dụng Xstream với chú thích
Làm cách nào để xóa thuộc tính class = ”Something” trong Xstream.Xstream: loại bỏ thuộc tính lớp
Tôi sử dụng Xstream với chú thích
Thực tế vấn đề không rõ ràng như được nói đến. Tôi đoán là bạn đang sử dụng một bộ sưu tập phi tiêu chuẩn hoặc sử dụng một trường của một loại giao diện mà XStream cần lưu trữ lớp thực tế.
Trong trường hợp thứ hai bạn chỉ có thể sử dụng bí danh:
xstream.alias("field name", Interface.class, ActualClassToUse.class);
Xem http://markmail.org/message/gds63p3dnhpy3ef2 để biết thêm chi tiết.
Có phương án thay thế oxm mùa xuân nào không? – coffeMug
Bạn có thể đưa ra một số ví dụ về đầu ra không? Tôi nghĩ điều này thường xảy ra khi sử dụng Bộ sưu tập. Nếu không nhìn thấy đầu ra, tôi đoán tốt nhất là bạn cần phải đăng ký bí danh:
xstream.alias("blog", Blog.class);
Xem http://x-stream.github.io/alias-tutorial.html cho sâu hơn vùng phủ sóng. Một lần nữa, dán vào một số đầu ra mẫu.
Sử dụng một cái gì đó thuộc loại này để loại bỏ các lớp thuộc tính hoàn toàn chứ không phải là răng cưa nó với cái gì khác:
private String generateResponse(final XStream xStream)
{
StringWriter writer = new StringWriter();
xStream.marshal(this, new PrettyPrintWriter(writer) {
@Override
public void addAttribute(final String key, final String value)
{
if (!key.equals("class"))
{
super.addAttribute(key, value);
}
}
});
return writer.toString();
}
Tôi đọc mã của nó và thấy nếu lớp học của bạn là không mapper.defaultImplementationOf(fieldType)
, nó sẽ thêm các thuộc tính lớp mặc định cho bạn, trừ khi tên thuộc tính lớp là null;
Vì vậy, thiết lập này có thể loại bỏ các class =”Something” thuộc tính
xstream.aliasSystemAttribute(null, "class");
Có phương án thay thế oxm mùa xuân nào không? – coffeMug
Thuộc tính này được thể hiện, ít nhất, khi nó không rõ ràng mà lớp sẽ được sử dụng. Việc sử dụng giao diện là một ví dụ. Trong các trường hợp như vậy Bạn có thể thử:
xStream.addDefaultImplementation(YourDefaultImplementation.class, YourInterface.class);
.
Bạn nhận được class = "..." chính xác ở đâu? Bạn có thể đăng một số XML được tạo ra không? –
http://markmail.org/message/t33x7hswlwsk766i – Cherian