Tag: eclipselink moxy

在JAXB MOXy中列出包装器

我正在声明一个List对象属性: @XmlRootElement(namespace = “…”) @XmlType public class Test { private List myList; @XmlElementWrapper(name = “myListWrapper”) @XmlElement(name = “myList”) public List getMyList() { return myList; } } 当具有空列表myList的此类的实例被编组时,MOXy不会生成空包装器MyListWrapper 。 但是,JAXB RI会这样做。 使用RI时生成的XML看起来像这样: 有没有办法用MOXy获得相同的结果?

EclipseLink动态MOXy访问枚举值

我正在使用下面列出的XSD和相应的XML。 一切都适用于动态MOXy,但我不知道如何访问java中的枚举类型。 有什么建议么? 感谢帮助。 //JAVA code DynamicEntity person = (DynamicEntity) dynamicJAXBContext.createUnmarshaller().unmarshal(instanceDoc); String firstName = person.get(“firstName”); String lastName = person.get(“lastName”); //until here it works well //but now: how to get and set the value of the “quadrant”? // following lines do not work String quadrant=person.get(“quadrant); person.set(“quadrant”,”NORTH”);

当数据包含不可显示的字符时,JAXB输出无效的XML

我正在使用JAXB 2.2.5从JAXB模型输出Xml,数据是从数据库填充的,有时数据库包含不可显示的字符,它不应该像 0x1a 如果确实如此,那么JAXB只是按原样输出这个字符来输出无效的Xml,它不应该逃脱它或其他东西吗? 更新 我想知道是否有任何实现可以解决这个问题,也许Eclipselink MOXy呢? 编辑 我尝试了修复非法char问题的解决方法,但它以不合需要的方式更改输出。 fred 至 fred 即已成为 ,这是不可取的,我不知道为什么会这样做。

如何将名称空间设置为false?

我正在尝试使用EclipseLink MOXy解析一些XML,并且它在使用xsi属性时失败了。 如果我删除它,它解析很好。 但是,我已经获得了100GiB的XML,并且不能更改源文件。 有人建议,如果我可以设置XmlParser.setNamespaceAware(false)那么它应该可以工作 – 但是我不知道如何配置它,而没有直接进入MOXy的内部。 info:doi/10.1007/s10973-004-0435-2 2009-04-28 J J:1007 J:1007:2777 […] 当xsi:前缀出现时我得到的例外是: org.springframework.oxm.UnmarshallingFailureException: JAXB unmarshalling exception; nested exception is javax.xml.bind.UnmarshalException – with linked exception: [Exception [EclipseLink-25004] (Eclipse Persistence Services – 2.4.0.v20120608-r11652): org.eclipse.persistence.exceptions.XMLMarshalException Exception Description: An error occurred unmarshalling the document Internal Exception: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[13,107] Message: http://www.w3.org/TR/1999/REC-xml-names-19990114#AttributePrefixUnbound?crossref&xsi:schemaLocation&xsi]

线程“main”中的exceptionjavax.xml.bind.PropertyException:name:eclipselink.media-type value:application / json

我试图按照这里的示例,但得到一个javax.xml.bind.PropertyException。 由于以下代码行,我收到此exception: marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, “application/json”); 我已经完全复制/粘贴了上面列出的示例,因此我的代码正是您在那里看到的。 搜索SO和谷歌对此没什么帮助,并且认为我会把这些带给SO的天才以获得一些帮助。 任何帮助都会受到最高的赞赏,(de)使用JSON和XML与json.org,Jackson和JAXB进行序列化已经变成了一个消耗了近一个月生命的黑色和无底洞。 我的第一印象是我没有正确指定eclipselink运行时( 如此处所述 ),但没有产生解决方案。 堆栈跟踪: Exception in thread “main” javax.xml.bind.PropertyException: name: eclipselink.media-type value: application/json at javax.xml.bind.helpers.AbstractMarshallerImpl.setProperty(AbstractMarshallerImpl.java:358) at com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.setProperty(MarshallerImpl.java:527) at HelloWorld.main(HelloWorld.java:17) 这就是我正在做的事情,

使用MOXy和XPath,是否可以解组属性列表?

编辑:这是我加载XML文档的方式,正如我在Blaise的回答中使用的那样。 我正在加载它,因为我想使用节点,而不是整个文档。 即使使用整个文档,我在以这种方式加载时仍然遇到麻烦。 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false); factory.setNamespaceAware(false); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(“[path to doc]/input.xml”); TestClass testClass = (TestClass) unmarshaller.unmarshal(doc); 我有这样的XML: cookie crackers 一堂课: @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = “test”) public class TestClass { @XmlPath(“items/item/text()”) @XmlElement private ArrayList itemList = new ArrayList(); // getters, setters omitted } 无论我是否有@XmlElement ,上面的代码都会起作用,我得到一个包含[cookie,crackers]的ArrayList。 如果我将上面的声明更改为 @XmlPath(“items/item/@type”) @XmlElement private […]

我可以用代码替换jaxb.properties吗?

我正在使用 EclipseLink的JAXB实现中的一些非标准扩展 ,为了实现该实现,我必须使用jaxb.properties进行配置。 效果很好。 但是,由于构建错误,属性文件未包含在正确的位置,导致使用默认的JAXB,没有任何错误只是继续解析XML文件,忽略非标准扩展,留下我一个非工作豆。 为了使这更加健壮,我想摆脱属性文件并在代码中指定上下文配置。 我已经有了EclipseLink的编译时依赖性,因为它们的注释,我不需要在部署时配置这部分(实际上,看到可能出错的地方,我不希望它可配置)。

JAXB将多个XML元素解组为单个类

我有以下XML结构,它跨多个XML元素建模单个概念。 这种格式不在我的掌控之中。 1 x 2 y 1 Channel name 2 Another channel name 我想在我可以控制的数据库中对此进行建模,并且可以使用包含id , type和name字段的更简单的Channel表。 因此,我想在Wrapper类的单个List解组。 可以自动使用@Xml…注释吗? 我目前正在使用JAXB解组成单独的@XmlElement(name=”Channel”)和@XmlElement(name=”ChannelName”)类列表,然后在Channel上对瞬态ChannelName/name进行后处理,但我认为必须有一种更简单的自动方式来映射这些元素。 或者它是XSLT的工作? 知道XML作为HTTP文件POST文件进入并且我正在使用Spring 3,Java和Hibernate可能会有所帮助。 我希望EclipseLink JAXB(MOXy)中的某些东西可能有帮助:)