2012-09-14 18 views
5

Tôi muốn tạo ra một xml theo định dạng sauXStream làm thế nào để tránh trường có giá trị cụ thể trong khi marshaling

<parm-list> 
<param> 
<NAME>somename</NAME> 
<VALUE>somevalue</VALUE> 
</param> 
<param> 
<NAME>somename</NAME> 
<VALUE>somevalue</VALUE> 
</param> 
<param> 
<NAME>somename</NAME> 
<VALUE>somevalue</VALUE> 
</param> 
<param> 
<NAME>somename</NAME> 
<VALUE>somevalue</VALUE> 
</param> 
</param-list> 

tôi có thể làm gì nếu tôi không muốn có một lĩnh vực <PARAM> với cụ <NAME> trong nó?

Trả lời

1

Mặc dù tôi thực sự không nghĩ rằng Xstream thực sự thích hợp cho công việc, dường như điều đó là có thể.

Bạn có thể triển khai công cụ chuyển đổi của riêng mình tương tự như one of those. Nếu bạn nhìn vào giao diện Converter, bạn sẽ thấy rằng bạn có thể dễ dàng bỏ qua một phần tử bằng cách không viết bất cứ điều gì lên HierarchicalStreamWriter.

public class ParamConverter implements Converter{ 

    boolean canConvert(Class type){ 
     return Param.class.equals(type); 
    } 

    public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context){ 
     Param param = (Param)source; 
     if (NAME_TO_SKIP.equals(param.getName()){ 
      return; 
     } 
     // delegate to ReflectionConverter or something else appropriate. 
    } 
} 

Để đăng ký chuyển đổi, chỉ cần gọi xStram.registerConverter(new ParamConverter());.

Để biết thêm thông tin, vui lòng đọc this tutorial về bộ chuyển đổi.