草庐IT

unmarshalling

全部标签

java - 如何将一个xml元素绑定(bind)到一个对象成员变量中?

我正在尝试使用moxy将xml解码为对象。下面是xml的示例。valuevalueofaddress下面是我要映射的类。importjavax.xml.bind.annotation.XmlAccessType;importjavax.xml.bind.annotation.XmlAccessorType;importjavax.xml.bind.annotation.XmlElement;importjavax.xml.bind.annotation.XmlRootElement;importorg.eclipse.persistence.oxm.annotations.XmlPat

java - JAXB 解码树结构

我有XML输入,它本质上是一个树结构。目标是将代码(取消)编码为Java类。Key1Value1Key2Subkey2Value999XML包含典型的键/值对。并且每个值可以包含另一个键/值对、列表键/值对或仅包含一个字符串值。@XmlRootElement@XmlAccessorType(XmlAccessType.FIELD)staticclassKeyValuePair{@XmlElement(name="key")privateStringkey;@XmlElement(name="value")privateStringvalue;//hereIdon'tknowhowtor

Java/JAXB : Unmarshall XML elements with same name but different attribute values to different class members

我正在尝试根据属性之一将具有多个“Fields”元素的XML解析为不同的类成员。这是XML:这是它应该映射到的java类:publicclassAPMSeries{privateListselectedFields;privateListfirstSelectedFields;}谁能告诉我如何将具有属性type="SelectedFields"的Fields元素设置为selectedFields成员,并将具有属性type="FirstSelectedFields"的Fields元素设置为firstSelectedFields成员? 最佳答案

java - 解码具有嵌套子元素的复杂 xml

我想使用jaxb2解码给定的xml文件。这是源xml文档。Default11111112012-03-01T00:00:00false2012-03-02T00:00:00false为此我定义了以下xsd我使用JAXB为此生成了类,但是当我解码时,我只能获取日历对象,但不能获取日历异常列表中嵌套的“异常”对象。下面的代码会解释上面的内容publicvoidCheckResults(filePath){Rootods=handler.unmarshal(filePath);for(Calendarcalendar:ods.getCalendarList().getCalendar()){

java - 使用 JAXB 将日期从 XML 字符串解码为实体

当我使用JAXB时,出现了问题。我将实体转换为xml字符串,一切正常。但是当我将xml字符串转换回实体时,一些信息丢失了(所有信息都具有相同的类型java.util.Date)。在实体中:publicDateflightBaseDate;在xml中:2013-09-16T00:00:0008:00解码后,getFlightBaseDate()返回null.我用谷歌搜索。根据一项建议,我在我的实体中使用了@。然后是:@XmlElement(name="timestamp",required=true)publicDateflightBaseDate;我相信它会很完美,但是...抛出异常,

java - JAXB : how to read the xsi:type value when unmarshalling

我在XSD/XML到Java的方向上使用JAXB。我的XSD包含派生类型,我必须解码的XML包含xsi:type属性。查看代码JAXB(默认的Sun实现)已经生成(用于解码)似乎没有方法来获取这些属性。是不是因为我总能对解码的Java对象执行getClass()并找到实际的类?不过,根据我提供给JAXBContext.newInstance的包或类,是否可以实例化一些基类?(一个是对应于xsi:type属性的实际值的类的父类(superclass))。在这种情况下,可能需要能够读取XML实例中出现的实际属性的值。 最佳答案 JAXB

xml - JAXB Unmarshalling - 是否可以在不使用模式验证的情况下限制元素的出现?

我是JAXB的新手并且继承了一个项目,该项目使用它来编码/解码xml-已经使用各种JAXB注释编写了自定义验证-目前没有使用模式。我需要在解码时添加一些验证以检查给定元素是否只出现一次-从周围搜索看起来它通常是在xsd中使用“maxOccurs=1”实现的-所以我的问题是这可以使用任何JAXB验证来实现注释?例如(为简单起见的缩短版本)-当前最后一个值“NameThree”被取消编码,但当存在超过1个名称元素时我想要验证错误。@XmlAccessorType(XmlAccessType.FIELD)publicclassPerson{@XmlElement(name="NAME",re

java - JAXB un/marshalling : Is there a difference between using arrays and lists?

我对JAXB还很陌生,很想了解它的更多信息。我注意到,在编码时,数组和列表中对象的XML表示是相同的。我感兴趣的是JAXB在取消/编码时如何处理这两种数据结构,以及是否最好将其标准化以使用一种而不是另一种?如果是这样,两者之间有什么区别(性能方面等)?另外,在为我的元素选择容器时我应该考虑什么?如有任何信息,我们将不胜感激。谢谢! 最佳答案 在XML表示中,数组和List具有相同的形式。解码XML时,JAXB将选择您在Java类中的类型。可以将集合解码为从List编码的数组,反之亦然。数组和List都各有利弊。使用对您的目的更好的东

java - 名称为 "unknown"的 JAXB 映射元素

我有一个XML,我无法控制它的生成方式。我想通过将它解码为我手写的类来创建一个对象。其结构的一个片段如下所示:aaabbbccc我该如何处理这种情况?当然,元素数量是可变的。 最佳答案 如果您使用以下对象模型,那么每个未映射的key_#元素都将保留为org.w3c.dom.Element的实例:importjava.util.List;importjavax.xml.bind.annotation.XmlAnyElement;importjavax.xml.bind.annotation.XmlRootElement;importo

Java 编码和解码

Employee.xsdFamily.xsd使用这2个模式的第三方应用程序生成xml字符串,如-KevinSmithselfNewKevinNewSmithwifeJenniferSmith第二个模式始终是固定模式。我的要求是解析关系标签,如果关系是“self”,我需要用各自字段的firstName和lastName覆盖empFirstName和empLastName。我怎样才能做到这一点?编辑1:Employee.xsd是动态的,可以是任何东西。但是Family.xsd是静态的,可以从任何其他xsd导入。 最佳答案 大纲:(a)映