首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你能在没有父标记的情况下释放一个对象吗?

你能在没有父标记的情况下释放一个对象吗?
EN

Stack Overflow用户
提问于 2013-02-06 10:45:26
回答 1查看 361关注 0票数 3

我有下一节课。在编组时,我想省略标记"config",可以吗?

代码语言:javascript
复制
@XmlRootElement(name = "config")
@XmlAccessorType(XmlAccessType.FIELD)
public static class Config {

        @XmlElement(name = "dry-run")
        protected Boolean dryRun;

        @XmlElementWrapper(name = "filters")
        @XmlElement(name = "filter")
        protected List<String> filters;

        public Boolean isDryRun() {
                return dryRun;
        }

        public void setDryRun(boolean dryRun) {
                this.dryRun = dryRun;
        }

        public List<String> getFilters() {
                return filters;
        }
}

示例:

当前产出:

代码语言:javascript
复制
<Root>
  <config xmlns:wf="nspace">
    <dry-run>false</dry-run>
    <filters>
      <filter>
        myFilter
      </filter>
    </filters>
  </config>
</Root>

期望产出:

代码语言:javascript
复制
<Root>
    <dry-run>false</dry-run>
    <filters>
      <filter>
        myFilter
      </filter>
    </filters>
</Root>

更新:

我想知道的是“这只能用JAXB完成吗?”只要检查一下这个问题(不是答案),我就不知道他是如何只使用JAXB封送的,也没有编写任何根元素。这正是我想要的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-06 13:46:06

因此,您希望将对象编组到一个XML子树,而不是一个XML子树,而是一个XML片段,即没有父级的兄弟姐妹列表。我相信Jaxb自己是不可能做到这一点的。但您可以将其序列化为某种中间形式,并对其进行处理。例如,您可以创建自己的SAX ContentHandler,并具有处理程序计数深度,并且只在非零嵌套深度委托事件。

代码语言:javascript
复制
class NoRoot extends XMLFilterImpl {

  private int depth;

  @Override public void startDocument() throws SAXException
  {
    depth = 0;
  }

  @Override public void startElement(String uri, String localName,
                                     String qName, Attributes atts)
    throws SAXException
  {
    if (depth != 0) super.startElement(uri, localName, qName, atts);
    ++depth;
  }

  @Override public void endElement(String uri, String localName,
                                   String qName)
    throws SAXException
  {
    --depth;
    if (depth != 0) super.endElement(uri, localName, qName);
  }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14727084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档