@XStreamOmitField
当然用这个注解了。

解决方案 »

  1.   

    试了一下,不行啊。
    @XStreamAlias("HEAD")
    private HEAD head;
    @XStreamOmitField
    private MSG msg;
    测试之后,有异常如下:
    com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field com.ibank.monitor.padomain.CFX.MSG
    ---- Debugging information ----
    field               : MSG
    class               : com.ibank.monitor.padomain.CFX
    required-type       : com.ibank.monitor.padomain.CFX
    converter-type      : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
    path                : /CFX/MSG
    version             : 1.4.6
      

  2.   

    我是xml转成javabean,而且也有
    xStream.autodetectAnnotations(true);
      

  3.   

    import com.thoughtworks.xstream.annotations.XStreamOmitField;public class Test {
    private String name; @XStreamOmitField
    private String hidden; public Test(String name, String hidden) {
    this.name = name;
    this.hidden = hidden;
    } public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } public String getHidden() {
    return hidden;
    } public void setHidden(String hidden) {
    this.hidden = hidden;
    }}
    public static void main(String[] args) throws IOException {
    XStream xs = new XStream();
    // xs.processAnnotations(Test.class);
    xs.autodetectAnnotations(true);
    String str = xs.toXML(new Test("dddd", "dd"));
    System.out.println(str); }我这里毫无压力啊,上面两种你都试下。
      

  4.   

    fangmingshijie,你可能没有理解我意思问题。
    我的问题是,正常的话,xstream把xml解析成javabean时,xml文档每个节点,都要创建一个对应的javabean,并使用@XStreamAlias。但现在xml文档结构比较复杂,每个节点都创建一个对应的javabean时,工作量很大,而且中间很多节点,我取数据根本就不需要。我通过什么方法,控制xstream解析我使用的文档节点。就想jdom使用xpath一样
      

  5.   

    @XStreamOmitField,在stack overflow上面看的一些例子,或者官方,都是javabean转xml时使用。
    我现在应用的场景刚好相反,是把xml转javabean.
      

  6.   

    xstream好像提供隐含集合处理方 式的,叫什么addimplicitcollect之类的,不太记得了,你自己搜下吧,既然能正向过滤,肯定也可以反向过滤的。
      

  7.   

    addimplicitcollect是集合的处理方式,单个节点的处理方式,应该不行。整了一晚上,终于被我找到了。
    两种方式,1:override wrapMapper;2:x.omitField(A.class, "shouldCopyWithProject");
    具体说明,请点击这里希望以后遇到相同问题的同学们,能看到这个帖子。
      

  8.   

    可以扩展XStream类,处理时可以判断哪些节点处理,哪些节点掠过去。
    public class ETLXstream extends XStream {
        /*
         * (non-Javadoc)
         * 
         * @see
         * com.thoughtworks.xstream.XStream#wrapMapper
         */
        @Override
        protected MapperWrapper wrapMapper(MapperWrapper next) {
            return new MapperWrapper(next) {
                /*
                 * (non-Javadoc)
                 * 
                 * @see
                 * com.thoughtworks.xstream.mapper.MapperWrapper#shouldSerializeMember
                 */
                @Override
                public boolean shouldSerializeMember(@SuppressWarnings("rawtypes") Class definedIn, String fieldName) {
                    // 不能识别的节点,掠过。
                    if (definedIn == Object.class) {
                        return false;
                    }
                    // 节点名称为fileName的掠过
                    if (fieldName.equals("fileName")) {
                        return false;
                    }
                    return super.shouldSerializeMember(definedIn, fieldName);
                }
            };
        }
    }
      

  9.   


    大哥,回答问题时,都看看清楚题目啊!!!由javaBean到xml这么小儿科的问题,楼主不会自己去官网看帮助文档么???