我正在使用JAXB从XML生成java代码,它有一个枚举
<xs:simpleType name="color">
<xs:restriction base="xs:string">
<xs:enumeration value="Blue"/>
<xs:enumeration value="Green"/>
<xs:enumeration value="Yellow"/>
</xs:restriction>
</xs:simpleType>
我想为这个枚举添加几种颜色,比如红色和白色。我们不想更新xsd或生成的XML/Java代码,因为这些代码不属于我们,我们想要保持原样。
备选案文1.如果有一种读取XSD的方法,当它读取xs:simpleType name=“color”时,我可以为枚举添加颜色,这样生成的java枚举就具有所有需要的值
备选案文2.如果我可以编写一个适配器,它可以帮助我在生成的枚举中添加值
我已经检查了XMLAdapter,但重写它对我的情况没有帮助。由于它是枚举,我发现很难修改它,因为枚举在Java中是常量的
由于很难在枚举中插入值,我们使用定制的JAXB绑定将“color”元素从枚举转换为字符串类型。
<jaxb:bindings node="//xs:simpleType[@name='color']">
<jaxb:typesafeEnumClass map="false" />
</jaxb:bindings>
现在可以插入新值。我们知道这是有风险的,因为现在“color”元素可以接受任何字符串,但从项目的角度来看,它对我们是有效的。
我有以下问题,当我生成XML文件时,Jaxb给根元素的名称空间添加前缀,我不知道如何跳过它。 我有软件包信息.java文件 我有根元素 结果我得到了 如果没有@XmlNs,它的工作方式也是一样的,将命名空间添加到@XmlRoolElement也没有帮助。它会有什么问题?
问题内容: 我正在将对象编组到XML文件中。如何将注释添加到该XML文件中? 问题答案: 我看不到单独使用JAXB的方法。但是,我认为您可以利用DOM达到预期的效果: 其中jaxbContext是您正在使用的JAXBContext对象,而jaxbObject是要编组的对象。该示例仅将注释附加到文档末尾。对于其他位置,您将不得不遍历doc对象的DOM或使用XPath来查找要添加注释的确切元素,并在其
我正在构建一系列链接类,我希望这些类的实例能够整理成XML,这样我就可以将它们保存到一个文件中,以后再读进去。 目前我使用以下代码作为测试用例: XML输出为: 元素为空有什么原因吗?我希望它包含日期的字符串表示(即)。为了做到这一点,我需要编写一些我自己的代码吗? 的输出是:
我正在尝试解封包含CDATA元素的XML。我得到的字符串仍然有CDATA“包装器”。我使用XJC从XSD创建Java类,它们在包中。我正在使用包含在Oracle(Sun)Java7 JDK中的JAXB。 CDATA包装器为什么会持续存在?在我在这个站点和其他站点上看到的每一个示例中,它们都是在解封过程中被删除的。这肯定是个简单的问题,但我就是看不出来。
我正在使用JAXB解析器将通过http请求发送的XML转换为Java对象,同时根据XSD模式对其进行验证。问题是,当调用unmarshal()方法时,它会引发以下异常: UnMarshalException:意外元素(URI:“http://www.somedomain.com/”,local:“assign”)。所需元素为(无) 如果从根XML元素中删除名称空间,它会引发相同的异常,uri部分为
我有以下JAXB对象: 我使用JAXB编组程序将对象转换为XML: 它运行平稳,没有任何异常,但是,结果总是缺少元素键。我试图将其改为Attribute,但它也不起作用。以下是输出示例: 我曾尝试将键更改为另一个名称,例如AuthKey,但它仍然缺失。我做错了什么? 编辑我发现了问题,这是因为我的键的值是空的。如果它包含值,则将其写入XML。然而,您能解释一下为什么在XMLElement中,我写了