简体   繁体   English

使用JAXB编写对象的迭代器

[英]Marshal an iterator of object using JAXB

I having problem marshaling an iterator of objects using JAXB 我有问题使用JAXB封送对象的迭代器

User class: 用户类:

@XmlRootElement(name="User")
public class User{
    private Long id;
    private String name,mailid;
    private boolean isActive;
    public Long getId() {

        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getMailid() {
        return mailid;
    }
    public void setMailid(String mailid) {
        this.mailid = mailid;
    }
    public boolean isActive() {
        return isActive;
    }
    public void setActive(boolean isActive) {
        this.isActive = isActive;
    }

}

Function which return's an Iterator of User : 返回用户的迭代器的函数

public static Iterator<User> mapDoToUserObject(DataObject dao){

    final Iterator<Row> userRow = getRow(dao,USER.TABLE);


    return new Iterator<User>() {
        @Override
        public boolean hasNext() {
            return userRow.hasNext();
        }

        @Override
        public User next() {
            Row user = userRow.next();
            User user = new User();
            user.setId((Long)user.get(USER.USER_ID));
            user.setName((String) user.get(USER.FIRST_NAME));
            user.setMailid((String)user.get(USER.EMAIL_ID));
            return user;
        }

        @Override
        public void remove() {
            throw new UnsupportedOperationException("Remove not supported");

        }
    };  
}

How to marshal an iterator of Users using JAXB ? 如何使用JAXB编组用户的迭代器?

You'll either need to drain the iterator into a collection and then marshal that (which is the easiest solution), or else use JAXB's incremental marshalling feature, which means iterating over the iterator yourself and marshalling the individual objects. 您需要将迭代器排入集合,然后编组(这是最简单的解决方案),或者使用JAXB的增量编组功能,这意味着自己迭代迭代器并编组各个对象。 For a description on how to do that, see Can JAXB Incrementally Marshall An Object? 有关如何执行此操作的说明,请参阅JAXB可以增量Marshall一个对象吗?

JAXB元帅套装<object><div id="text_translate"><p>我有一个类似于此的 object:</p><pre class="lang-java prettyprint-override"> public class Obj { @XmlElement(name="value") public Set&lt;Object&gt; values; }</pre><p> 编组时,这会生成 xml ,如:</p><pre class="lang-xml prettyprint-override"> &lt;Obj&gt; &lt;value xsi:type="xs:dateTime" xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;2009-02-14T00:31:30.001+01:00&lt;/value&gt; &lt;value xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;test&lt;/value&gt; &lt;/Obj&gt;</pre><p> 但是,我想更改其中一些值(例如用于序列化Date和Timestamp对象的日期格式),并摆脱烦人的xsi属性(但这并不是真正的要求,我可以接受)</p><p> 我尝试将@XmlJavaTypeAdapter添加到values ,但在适配器中我得到了完整的Set&lt;Object&gt;来适应,而不是单个元素。 我也尝试过使用 package 适配器,但是,由于我的Set是用于Object ,所以我不能放置@XmlJavaTypeAdapter(type)属性。</p><p> 另外,我尝试使用@XmlJavaTypeAdapter(value=MyAdapter.class, type=Timestamp.class)来获取我想要的 Object 中的值的适配器。</p><p> 所以问题是,有人知道让适配器为此工作的方法吗? 或者,每次序列化Date或Timestamp object 时更改日期格式?</p><p> 提前致谢!</p></div></object> - JAXB marshal Set<Object>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用JAXB的元组对象的标签名称不正确 - Marshal object using JAXB incorrect Tag name JAXB元帅套装<object><div id="text_translate"><p>我有一个类似于此的 object:</p><pre class="lang-java prettyprint-override"> public class Obj { @XmlElement(name="value") public Set&lt;Object&gt; values; }</pre><p> 编组时,这会生成 xml ,如:</p><pre class="lang-xml prettyprint-override"> &lt;Obj&gt; &lt;value xsi:type="xs:dateTime" xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;2009-02-14T00:31:30.001+01:00&lt;/value&gt; &lt;value xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;test&lt;/value&gt; &lt;/Obj&gt;</pre><p> 但是,我想更改其中一些值(例如用于序列化Date和Timestamp对象的日期格式),并摆脱烦人的xsi属性(但这并不是真正的要求,我可以接受)</p><p> 我尝试将@XmlJavaTypeAdapter添加到values ,但在适配器中我得到了完整的Set&lt;Object&gt;来适应,而不是单个元素。 我也尝试过使用 package 适配器,但是,由于我的Set是用于Object ,所以我不能放置@XmlJavaTypeAdapter(type)属性。</p><p> 另外,我尝试使用@XmlJavaTypeAdapter(value=MyAdapter.class, type=Timestamp.class)来获取我想要的 Object 中的值的适配器。</p><p> 所以问题是,有人知道让适配器为此工作的方法吗? 或者,每次序列化Date或Timestamp object 时更改日期格式?</p><p> 提前致谢!</p></div></object> - JAXB marshal Set<Object> 使用jaxb将Java对象转换为xml,反之亦然(将其转换为元组和非元组) - convert java object using jaxb to xml and vice versa (marshal and unmarshal) JAXB-如何封送没有标题的Java对象 - JAXB - How to marshal java object without header JAXB-具有XML字符串字段的元组Java对象 - JAXB - marshal java object with XML string field 如何将JAXB对象封送到XOM? - How do I marshal a JAXB object to XOM? 验证使用 JAXB 和 Stax 来编组 XML 文档 - Validation using JAXB and Stax to marshal XML document 使用JAXB以不同方式编组模型 - Marshal model in different ways using JAXB 如何使用 JAXB 编组异常的子类 - How to marshal a subclass of exception using JAXB 使用JAXB,在Java中编组嵌套元素 - Using JAXB, marshal nested element in JAVA
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM