Tag: jaxb

JAXB – 解组XMLexception

我试过读一个大的xml文件(类似于500MB)。 首先,我使用xjc和我的XML的XSD文件。 所有类都按预期生成。 尝试读取文件我遇到此错误:javax.xml.bind.UnmarshalException:意外元素。 这是我的代码: (……) JAXBContext context = JAXBContext.newInstance(“br.com.mypackage”); Unmarshaller unmarshaller = context.createUnmarshaller(); File f = new File(“src/files/MyHuge.CNX”); XMLInputFactory inputFactory = XMLInputFactory.newInstance(); InputStream in = new FileInputStream(f); XMLEventReader eventReader = inputFactory.createXMLEventReader(in); Person p = null; int count = 0; while (eventReader.hasNext()) { XMLEvent event = eventReader.nextEvent(); if (event.isStartElement()) { StartElement startElement = event.asStartElement(); if […]

如何使用JAXB删除XML中的标记

我正在使用JAXB将java对象转换为xml文件。 在我的XML文件中,我需要删除标记 不使用XSLT。 例如:删除标签订单 12324 例外结果: 12324

JAXBinheritance冲突 – 在子类上重新注释

我目前在我的项目上有这个环境: public abstract class Foo { private List things; public List getThings() { return this.things; } } public abstract class Bar extends Foo { @XmlElements({@XmlElement(name = “first”, type = First.class)}) public List getThings() { return super.getThings(); } } public class Bobar extends Bar { @XmlElements({@XmlElement(name = “second”, type = Second.class)}) public List getThings() { return […]

java unmarshall LocalDateTime错误

这是我的适配器类: public class LocalDateTimeAdapter extends XmlAdapter { @Override public LocalDateTime unmarshal(String v) throws Exception { return new LocalDateTime(v); } @Override public String marshal(LocalDateTime v) throws Exception { return v.toString(); } } 这是一个对象类,我想存储日期: @XmlAccessorType(XmlAccessType.FIELD) public class Object { @XmlJavaTypeAdapter(LocalDateTimeAdapter.class) private LocalDateTime time; public LocalDateTime getTime() { return time; } 出于某种原因,我无法编译它。 它表明问题是return new LocalDateTime(v); 。 这是我得到的错误: Error:(9, […]

如何将元素的内部文本内容映射到Class属性?

假设我分别有以下XML和Java代码: My text content @XmlRootElement( name=”foo” ) public static class Foo { // This is where I want to see “My text content” stored private String text; // getters and setters } 当我尝试编组XML时,我的Foo实例没有使用给定XML中我的foo元素的内部文本中的值填充其text属性。 我该如何解决这个问题?

将名称空间设置为@XmlRootElement时,解组失败且没有错误

我创建了一个JAXB对象,我正在尝试将xml字符串解组到其中。 我面临的问题是,当我将namespace属性放在@XmlRootElement和我发送的xml文档中时, JAXB对象将被创建,但它是空的。 如果我删除命名空间它的工作原理。 所以这就是我的意思 我的JAXB对象: @XmlRootElement(name = “incident”, namespace = “http://www.ba.com/schema/BAserviceDeskAPI/incident”) @XmlAccessorType(XmlAccessType.FIELD) public class Incident { @XmlElement private String eventTitle; public Incident() { } public String getEventTitle() { return eventTitle; } public void setEventTitle(String eventTitle) { this.eventTitle = eventTitle; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append(“Incident [“); builder.append(“eventTitle=”); builder.append(eventTitle); […]

JAXB将1个XML标记映射到2个变量

我试图使用一个类来映射我从XML请求得到的响应。 但xml响应有所不同,具体取决于某些设置。 例如,在响应中,我得到标签“owner”,其中填充了所有者对象的ID。 如果我在我的请求中添加一个设置,我将返回完整的所有者数据,如firstname和lastname。 现在我想根据响应将owner标记映射到String变量或Class。 示例: @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = “domain”) public class Response { @XmlElement private String name; @XmlElement(name = “owner”) private String ownerSimple; @XmlElement(name = “owner”) private Owner ownerComplex; } @XmlRootElement(name = “ownerc”) public class OwnerC { @XmlElement int id; @XmlElement String fname; @XmlElement String lname; } 要映射的XML: Foo 1234 Foo 1234 Jon Doe

在JAXB中需要一个元素或另一个元素

我有一个这样的JAXB注释POJO: @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Clazz implements Serializable { @XmlElement(required = false) private int a; @XmlElement(required = false) private int b; } 我想标记要求字段a或字段b 。 根据我目前的设置,它们都不是必需的,但我希望其中一个存在而不是另一个。 我怎么能实现它?

Jersey / Jaxb别名bean列表

我有一个界面 @Path(“basePath”) @Produces(MediaType.APPLICATION_XML) @Consumes(MediaType.APPLICATION_XML) public interface SomeService { @GET @Path(“list”) public List getItems() throws WebApplicationException; } 还有一个豆子 @XmlRootElement(name = “item”) @XmlAccessorType(XmlAccessType.FIELD) public class ItemBean { @XmlElement(name = “name”) private String someName; @XmlElement(name = “description”) private String desc20Char; ….. 如果我提出请求,我的回复是 foo bar ….etc…. 除了itemBeans标签之外,所有这些都很好。 如何将其重命名为项目? 我尝试将@XmlElement(name =“items”)添加到接口的方法,实现类的方法和返回参数。 我错过了什么吗? 谢谢

如何直接调用JAXB XMLAdapter

当我试图直接解组根对象而不是另一个对象中的字段时,我违反了jaxb的XMLAdapters的限制,因此绕过了@XmlJavaTypeAdapter 我宁愿不包装我的对象,因为这将改变将在我们的数据库中序列化的xml。 听起来有可能直接调用XMLAdapter,在其他地方通过这些答案: [1] http://www.coderanch.com/t/505457/XML/jaxb-xmladapter-rootElement [2] http://markmail.org/message/etvbyzn3e3idpa7q#query:+page:1+mid:cetzvq37nifr6tk6+ state:results [3] JaxBinheritance编组抽象类 但我不知道你会怎么做:( 我猜它会是这样的 AdaptedFoo adaptedFoo = (new MyAdapter()).unmarshall(fooXml) 但这不是XMLAdapter unmarshal方法的接口。 在我的情况下,xml需要转换为AdaptedFoo对象才能被解组。 eg. public BackgroundJob unmarshal(AdaptedFoo adaptedFoo) 我是否需要一个额外的解组步骤来将myXml转换为AdaptedFoo对象,然后调用我的XMLAdapter将其转换为预期的子类? 还是有更优雅的方式? 什么是推荐的过程?