相关疑难解决方法(0)

如何解析xml到java对象?

我有一个XML用于配置一些规则,它没有复杂的结构,但是这个配置在我的系统中的任何地方使用,所以我想将这个XML解析为java对象并设计为单例模式,这是我的好方法可以使用它直接解析XML到Java对象而无需编写太多代码?

我做了一些关于谷歌的研究,知道JAXB是一个选择,我的应用程序只是一些工具程序,它读取规则,然后按照做的东西,JAXB可以更广泛地用于Web服务,它适合我的项目?

如果是的话,最重要的问题是,我用xjc根据xsd文件生成java对象的源类,解组之后我会直接得到这些configurationType对象,是否有必要再次转换,(从JaxB类到我拥有的java pojo对象)配置),我看到大多数编码器做到了这一点,但为什么呢?因为它们是一些数据,只是从生成的对象到JAXB并复制到自己创建的POJO对象

java xml

28
推荐指数
3
解决办法
13万
查看次数

JAXB unmarshaller.unmarshal何时返回JAXBElement <MySchemaObject>或MySchemaObject?

我有两个代码,在两个不同的java项目中,做了几乎相同的事情,(根据xsd文件解组webservice的输入).

但在一种情况下我应该这样写:(输入是一个占位符名称)(元素是OMElement输入)

ClassLoader clInput = input.ObjectFactory.class.getClassLoader();
JAXBContext jc = JAXBContext.newInstance("input", clInput);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Input input = (Input)unmarshaller.unmarshal( element.getXMLStreamReader() );
Run Code Online (Sandbox Code Playgroud)

在另一个lib中,我必须使用JAXBElement.getValue(),因为它是一个返回的JAXBElement,一个简单的(Input)转换只是崩溃:

Input input = (Input)unmarshaller.unmarshal( element.getXMLStreamReader() ).getValue();
Run Code Online (Sandbox Code Playgroud)

你知道是什么导致了这样的差异吗?

java jaxb unmarshalling

27
推荐指数
2
解决办法
3万
查看次数

使用JAXB解组XML时出现ClassCastException

我已经使用xjcxsd 生成了java类,其中根元素是A类型的AType.

jaxb生成的根元素是AType&没有A生成类.

当我尝试解组对应于该xsd的xml并强制转换JaxbElement时,它会抛出一个强制转换异常:

片段:

JAXBContext jaxbContext = JAXBContext.newInstance(Class.forName("AType"));
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
AType aType = (AType) unmarshaller.unmarshal(new ByteArrayInputStream(xmlString.getBytes()));

例外:

java.lang.ClassCastException: javax.xml.bind.JAXBElement

其他案例的相同代码正确执行并成功反序列化.

我怎样才能找到unmarshal()给我什么类型的对象?我不知道在这种情况下出了什么问题,我已经尝试打印出那些字段,jaxbElement但它不是很有用!

java xml xsd jaxb unmarshalling

4
推荐指数
1
解决办法
3947
查看次数

标签 统计

java ×3

jaxb ×2

unmarshalling ×2

xml ×2

xsd ×1