JAXB_FORMATTED_OUTPUT
全部标签 我是jaxb的新手。我的问题如下:使用jaxb,是否可以从xml文件自动映射到java对象?从xml文件开始,是否有生成带有注释jaxbrelaitve的Java类的东西? 最佳答案 确实可以。但是,您需要XSD而不是XML文件。有一些工具(例如Trang)可以从一个或多个示例XML文件推断出XSD。请注意,如果XML示例不完整,或者如果架构无法在单个XML文件(独占元素等)中完全表示,则使用工具生成此XSD可能会得到不准确的结果。获得XSD后,使用xjc为了生成编码器/解码器类。xjcmyxsd.xsd这将生成JAXB将用于编码/
在JAXB中,当使用xsd方案中的xjc自动生成类时。alpha.xsdbeta.xml如您所见,这两个方案共享Person元素。我想做的是:以ObjectFactory类为两个模式类共享的方式使用xjc生成类(输出类将在一个包中)不使用嵌套静态类(带有属性localScoping="toplevel")使用Person类与/alpha/persons/person绑定(bind),就像与/country/class/person绑定(bind)一样,所以没有两个Person创建的类(class)这样做的目的是解码一个xml,应用业务逻辑并创建另一个作为输出,其中某些元素(如Perso
我使用JAXB通过XMLStreamReader从非常大的XML文件中解码对象。如果我要解码的XML元素是分开的(用换行符或什至一个空格),这就可以正常工作。如果我正在解码的XML元素之间没有空格,我会丢失所有其他项目-XML阅读器似乎会在解码的元素之后吞下该元素。演示这一点的简化可运行示例的源代码位于https://gist.github.com/dalelane/88df784c3cb74b214d5c。有趣的部分是:XMLStreamReaderreader=XMLInputFactory.newInstance().createXMLStreamReader(inputStre
假设我有以下java类映射到我的REST服务的请求主体以搜索用户。@XmlRootElement(name="SearchParams")@XmlType(propOrder={})publicclassSearchParams{privateStringfirstname;privateStringlastname;privateListrole;...}请注意@XmlType注释的propOrder参数-它声明表示各个属性在XML文件中出现的顺序无关紧要,因此xsd:all而不是xsd:sequence。但是,如您所见,其中一个属性(role属性)是一个列表,因此对应于具有unbo
我正在使用Java和JAXB进行XML处理。我有以下类(class):publicclassCharacteristic{privateStringcharacteristic;privateStringvalue;@XmlAttributepublicStringgetCharacteristic(){returncharacteristic;}publicvoidsetCharacteristic(Stringcharacteristic){this.characteristic=characteristic;}@XmlValuepublicStringgetValue(){ret
我有这个POJO,它封装了Atom条目的一个动态的、非嵌套的元素:publicclassSimpleElement{privateNamespacenamespace;privateStringtagName;privateStringvalue;privateCollectionattributes;/*getters/setters/...*/为了完整性,属性publicclassAttribute{privateStringname;privateStringvalue;privateNamespacenamespace;/*getters/setters/...*/和命名空间:
我正在迁移到java8,在此过程中jaxb无法解析xml配置。虽然除了JDK什么都没有改变,但相同的代码和文件使用java7成功解析,但在java8上解析不正确。请注意,没有抛出异常,但数据没有出现在xml解码到的对象中。任何可能导致这种非常烦人的失败的想法。 最佳答案 我已经找到问题的原因了。我没有研究代码,但似乎JAXB或SAX解析器背后的代码已从java7更改为8,并且在java8中更不宽容。(这也可能是由于编译器/jvm本身的变化)解析是用注解完成的。它看起来像下面这样:@XmlRootElement(name="compo
一些代码片段。执行jaxb解码的java代码。非常简单,从在线教程中复制出来。JAXBContextjc=JAXBContext.newInstance("xmlreadtest");Unmarshalleru=jc.createUnmarshaller();//settingupforvalidation.SchemaFactoryschemaFactory=SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);StreamSourceschemaSource=newStreamSource(ReadXml.cla
是否可以在解码过程中处理JAXBXmlAdapter中XMLIDREF元素的前向引用?例如,我有以下XMLcomplexType:其中guardian字段可以引用文档其他地方的另一个Person类型的元素。我目前在编码时使用XmlAdapter,以便第一次编码对象时,它通过包含编码,并且该对象的任何后续出现都通过引用编码。参见mine的上一个问题.但是,由于我的XML实例文档的创建方式,Person元素的第一次出现可能发生在IDREF出现之后。这是可能的吗?或者我需要以不同的方式处理这个问题吗?谢谢! 最佳答案 我对你的relate
我想将许多对象编码到一个xml文件中。这进展顺利,除了我的编码器坚持添加额外的在每个对象之前。将多个对象编码到同一个文件中的首选方法是什么?如果没有别的,摆脱这些无关的xml声明的最佳方法是什么?我当前的代码:JAXBContextjc=JAXBContext.newInstance(relevantClasses);Marshallerm=jc.createMarshaller();XMLOutputFactoryxof=XMLOutputFactory.newFactory();XMLStreamWriterxsw=xof.createXMLStreamWriter(Channel