相关疑难解决方法(0)

如何调试JAXB unmarshalling?

我遇到了JAXB unmarshalling的问题.我想我已正确编码,但我的unmarshalled对象返回null参数.因此,我假设在解组时,JAXB没有看到它期望的适当的XML结构.但是,我没有收到任何错误消息或抛出任何异常.

无论如何都要逐步完成解组过程,看看它确实在哪里/为什么没有填充我的对象?

实际的解组代码相当普通:

public <T> T unmarshall(Node node, Class<T> clazz) throws JAXBException {
    // Creating an unmarshaller
    Unmarshaller u = JAXBContext.newInstance(clazz).createUnmarshaller();

    // unmarshal an instance node into  Java content
    return clazz.cast(u.unmarshal(node, clazz).getValue());
}
Run Code Online (Sandbox Code Playgroud)

但是,当我调用它时,我得到一个返回类型clazz的对象(如预期的那样),但是没有填充.

我试图解组的DOM对象是由第三方API生成的.我已经遇到了一些非常奇怪的解组行为,这就是为什么我希望能够调试这个过程.例如,如果我尝试解组DOM对象中的子元素(即:doc.getByElementName("myElement").item(0)),它将以静默方式失败.但是,如果我将文档转换为字符串,并将其重新导入到新文档中,那么它可以很好地转换它.

我不知道如何调试此问题,我开始感到非常沮丧.

感谢您的任何见解!

埃里克

debugging jaxb unmarshalling

16
推荐指数
2
解决办法
1万
查看次数

jaxbcontext生成不完整的模式?

我遇到了JAXB的一个奇怪问题.我用xjc从我的XSD生成我的java类,看起来很好看.如果我使用schemagen,它会生成一个与原始xsd匹配的正确模式.但是,如果我使用JAXBContext.generateSchema(),则生成的架构不完整.

我正在使用Oracle Java 1.6.0_29和jaxb-2.2.4-1.jar作为实现.我正在附上java代码(生成模式),以及下面的xsd以及jaxb调用的输出.

CalculateBorrowingDataResponse.xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema 
    version="1.1"
    attributeFormDefault="unqualified" 
    elementFormDefault="qualified"
    targetNamespace="http://www.domain.com/ClientServices/LendingSimulation/CalculateBorrowingDataResponse" 
    xmlns:lssSt="http://www.domain.com/ClientServices/LendingSimulation/CalculateBorrowingDataResponse"
    xmlns:cbdRes="http://www.domain.com/ClientServices/LendingSimulation/CalculateBorrowingDataResponse" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">


    <!-- CalculateBorrowingData -->
    <xsd:complexType name="CalculateBorrowingDataResponseType">
        <xsd:sequence>
            <xsd:element name="loanAgmt" type="cbdRes:LoanAgreementType" minOccurs="1" maxOccurs="1" />
        </xsd:sequence>
    </xsd:complexType>


    <xsd:complexType name="LoanAgreementType">
        <xsd:sequence>
            <xsd:element name="borrowingBasedPmtAmt" type="lssSt:borrowingBasedPmtAmt" minOccurs="0" maxOccurs="1" />
            <xsd:element name="maxPmtAmt" type="lssSt:maxPmtAmt" minOccurs="0" maxOccurs="1" />
            <xsd:element name="borrowingCapacityMin" type="lssSt:borrowingCapacityMin" minOccurs="0" maxOccurs="1" />
            <xsd:element name="borrowingCapacityMax" type="lssSt:borrowingCapacityMax" minOccurs="0" maxOccurs="1" />
            <xsd:element name="propertyValueMinAmt" type="lssSt:propertyValueMinAmt" minOccurs="0" maxOccurs="1" />
            <xsd:element name="propertyValueMaxAmt" type="lssSt:propertyValueMaxAmt" minOccurs="0" maxOccurs="1" />
        </xsd:sequence>
    </xsd:complexType>

    <xsd:element name="calculateBorrowingDataResponse" type="cbdRes:CalculateBorrowingDataResponseType"/>


    <xsd:simpleType name="borrowingBasedPmtAmt">
        <xsd:restriction base="xsd:decimal" >
        <xsd:totalDigits …
Run Code Online (Sandbox Code Playgroud)

xml schema jaxb

2
推荐指数
2
解决办法
2475
查看次数

标签 统计

jaxb ×2

debugging ×1

schema ×1

unmarshalling ×1

xml ×1