忽略元素
有什么方法可以忽略Jaxb解析中的元素吗? 我有一个很大的XML文件,如果我可以忽略其中一个大的复杂元素,那么它可能会更快地解析。
如果甚至根本不能验证元素内容,并且即使该元素不正确,也解析文档的其余部分,它会更好。
例如:这应该只产生Foo.element1和Foo.element2
<foo>
<element1>I want this</element1>
<element2>And this</element2>
<bar>
<a>ALL of bar should be ignored</a>
<b>this also should be ignored</b>
<c>
<x>a lot of C that take time to process</x>
</c>
<c>
<x>a lot of C that take time to process</x>
</c>
<c>
<x>a lot of C that take time to process</x>
</c>
<c>
<x>a lot of C that take time to process</x>
</c>
</bar>
</foo>
假设你的JAXB模型如下所示:
@XmlRootElement(name="foo")
public class Foo {
@XmlElement(name="element1")
String element1;
@XmlElement(name="element2")
String element2;
@XmlElement(name="bar")
Bar bar;
}
那么只需从Foo
删除bar
即可跳过输入文档中的<bar/>
元素。
或者,使用@XmlTransient
而不是@XmlElement
注释该字段,并且它也将被跳过。
JAXB将忽略任何未映射的属性。
明智的实现(至少在我领导的EcliseLink JAXB(MOXy)中)。 当我们通过SAX解析器处理内容(即输入是SAXSource)时,我们将负责构建对象的ContentHandler替换为不为该节进行处理的对象(org.eclipse.persistence.oxm.unmapped)。 UnmappedContentHandler)。 当我们正在使用通过StAX解析器处理内容时,我们只是前进到下一个映射的事件。
如果你确实有一个与该节点相对应的属性,你可以用@XmlTransient对它进行注释,使它成为一个未映射的属性。
所有你需要它的标记字段为@XmlTransient(@XmlTransient注释,它应该隐藏不需要的字段)。 下面的例子
JavaEE的:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "DeletedIds")
public class DeletedIds {
@XmlElement(name = "DeletedId")
private List<DeletedId> id;
@XmlTransient
@XmlElement(name = "success")
private String success;
//getters&setters
}
@XmlAccessorType(XmlAccessType.FIELD)
public class DeletedId {
private int id;
//getters&setters
}
XML:
<DeletedIds>
<DeletedId>
<id>1</id>
</DeletedId>
<DeletedId>
<id>2</id>
</DeletedId>
</DeletedIds>
链接地址: http://www.djcxy.com/p/62959.html
上一篇: Ignore element
下一篇: Launch tomcat from Maven with context.xml and injected password