在本文中,我们将详细介绍没有由JAXB生成的@XmlRootElement的各个方面,并为您提供关于指定的xml源没有引用架构.excel将基于xml的相关解答,同时,我们也将为您带来关于@Jacks
在本文中,我们将详细介绍没有由 JAXB 生成的 @XmlRootElement的各个方面,并为您提供关于指定的xml源没有引用架构.excel将基于xml的相关解答,同时,我们也将为您带来关于@JacksonXmlRootElement使用多个本地名称来匹配2个相同的xml文件,只具有不同的根名称、@XMLRootElement与@XmlType、com.intellij.psi.xml.XmlElementContentGroup的实例源码、Error: Not implemented: HTMLCanvasElement.prototype.getContext (的有用知识。
本文目录一览:- 没有由 JAXB 生成的 @XmlRootElement(指定的xml源没有引用架构.excel将基于xml)
- @JacksonXmlRootElement使用多个本地名称来匹配2个相同的xml文件,只具有不同的根名称
- @XMLRootElement与@XmlType
- com.intellij.psi.xml.XmlElementContentGroup的实例源码
- Error: Not implemented: HTMLCanvasElement.prototype.getContext (
没有由 JAXB 生成的 @XmlRootElement(指定的xml源没有引用架构.excel将基于xml)
我正在尝试从 FpML(金融产品标记语言)4.5 版生成 Java 类。生成了大量代码,但我无法使用它。试图序列化一个简单的文档,我得到了这个:
javax.xml.bind.MarshalException - with linked exception: [com.sun.istack.SAXException2: unable to marshal type "org.fpml._2008.fpml_4_5.PositionReport" as an element because it is missing an @XmlRootElement annotation]
事实上, 没有 类有 @XmlRootElement 注释,那么我做错了什么?我将 xjc (JAXB 2.1) 指向 fpml-
main-4-5.xsd,然后它包括所有类型。
答案1
小编典典为了将其他人已经陈述或暗示的内容联系在一起,JAXB XJC
决定是否将@XmlRootElement
注释放在生成的类上的规则非常重要(请参阅本文)。
@XmlRootElement
存在是因为 JAXB 运行时需要某些信息才能编组/解组给定对象,特别是 XML
元素名称和命名空间。您不能将任何旧对象传递给 Marshaller。@XmlRootElement
提供此信息。
注释只是一种方便,但是 - JAXB 不需要它。替代方法是使用JAXBElement
包装对象,它提供与
相同的信息@XmlRootElement
,但以对象的形式,而不是注释。
但是,JAXBElement
对象很难构造,因为您需要知道 XML 元素名称和名称空间,而业务逻辑通常不需要。
值得庆幸的是,当 XJC 生成一个类模型时,它也会生成一个名为ObjectFactory
. 这部分是为了向后兼容 JAXB v1,但它也是 XJC
放置生成的工厂方法的地方,这些方法JAXBElement
在您自己的对象周围创建包装器。它为您处理 XML
名称和命名空间,因此您无需担心。您只需要浏览这些ObjectFactory
方法(对于大型模式,可能有数百个)以找到您需要的方法。
@JacksonXmlRootElement使用多个本地名称来匹配2个相同的xml文件,只具有不同的根名称
如何解决@JacksonXmlRootElement使用多个本地名称来匹配2个相同的xml文件,只具有不同的根名称?
我想将xml解析为java对象,两个相同的xml,唯一的根标记名称不同:
<root1>
<a></a>
<b></b>
<c></c>
</root1>
<root2>
<a></a>
<b></b>
<c></c>
</root2>
可以仅使用一个注有类似内容的pojo来实现
@JacksonXmlRootElement(localName =“ root1 | root2”)吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
@XMLRootElement与@XmlType
一个不同但相关的问题,我会在这里包括。 @XMLType注释有一个propOrder属性来指定它的元素以什么顺序出现 – 是否有一个等价的@XMLRootElement?
我使用这些注释与JAX-WS注释一起创建Web服务,如果这有什么区别。
<xs:element name=foo type="bar"> </xs:element> <-- schema type
而XmlType用于表示局部元素(具有匿名或复杂类型):
<xs:complexType name=bar> </xs:complexType> <-- complex type
这里的局部/全局的主要区别在于对象将出现的模式的层次结构中,以及是否声明模式类型或复杂类型。这两个注释的文档都很好,包括示例:
XmlRootElement
XmlType
编辑:寻址propOrder问题:如果您还声明本地类型,您可以在全局元素上使用它:
@XmlRootElement (name="PersonElement") @XmlType (propOrder={"firstname","lastname"}) public class People{ @XmlElement public String firstname; public String lastname; }
这将产生类似:
<xs:element name="PersonElement" type="People"/> <xs:complexType name="People"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType>
com.intellij.psi.xml.XmlElementContentGroup的实例源码
@Override public boolean isMixed() { XmlElementContentGroup topGroup = getTopGroup(); return topGroup != null && ((XmlElementImpl)topGroup).findElementByTokenType(XML_PCDATA) != null; }
@Override public XmlElementContentGroup getTopGroup() { return (XmlElementContentGroup)findElementByTokenType(XML_ELEMENT_CONTENT_GROUP); }
public boolean isMixed() { XmlElementContentGroup topGroup = getTopGroup(); return topGroup != null && ((XmlElementImpl)topGroup).findElementByTokenType(XML_PCDATA) != null; }
@Override public XmlElementContentGroup getTopGroup() { return (XmlElementContentGroup)findElementByTokenType(XML_ELEMENT_CONTENT_GROUP); }
public boolean isMixed() { XmlElementContentGroup topGroup = getTopGroup(); return topGroup != null && ((XmlElementImpl)topGroup).findElementByTokenType(XML_PCDATA) != null; }
@Override public XmlElementContentGroup getTopGroup() { return (XmlElementContentGroup)findElementByTokenType(XML_ELEMENT_CONTENT_GROUP); }
Error: Not implemented: HTMLCanvasElement.prototype.getContext (
问题:
Error: Not implemented: HTMLCanvasElement.prototype.getContext (without installing the canvas npm package)
解决方案:
yarn add jest-canvas-mock
然后在相应的单元测试中 加上 import ''jest-canvas-mock'';
关于没有由 JAXB 生成的 @XmlRootElement和指定的xml源没有引用架构.excel将基于xml的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于@JacksonXmlRootElement使用多个本地名称来匹配2个相同的xml文件,只具有不同的根名称、@XMLRootElement与@XmlType、com.intellij.psi.xml.XmlElementContentGroup的实例源码、Error: Not implemented: HTMLCanvasElement.prototype.getContext (等相关知识的信息别忘了在本站进行查找喔。
本文标签: