解析xml响应javax.xml.bind.UnmarshalException时出错

时间:2014-10-30 05:35:03

标签: xml parsing jaxb xsd

我无法解析我的xml响应。

我的问题是,正确解析响应的完美xsd是什么。

ERROR:

        javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"response"). 
    Expected elements are <{http://equityapi.morningstar.com/}Prices>,
<{http://equityapi.morningstar.com/}data>,<{http://equityapi.morningstar.com/}p>,
<{http://equityapi.morningstar.com/}response>

我的xml回复:

<response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<data idtype="ticker" id="FSRFX">
    <Prices>
        <p v="10.0" d="1986-09-29"/>
        <p v="88.63" d="2014-10-29"/>
    </Prices>
</data>

我从XML Spy中的响应生成的xsd。

 <?xml version="1.0" encoding="UTF-8"?>
<!-- W3C Schema generated by XMLSpy v2015 sp1 (x64) (http://www.altova.com) -->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://equityapi.morningstar.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="p">
        <xs:complexType>
            <xs:attribute name="v" use="required">
                <xs:simpleType>
                    <xs:restriction base="xs:decimal">
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="d" use="required">
                <xs:simpleType>
                    <xs:restriction base="xs:date">
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:element name="data">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="n1:Prices" xmlns:n1="http://equityapi.morningstar.com/"/>
            </xs:sequence>
            <xs:attribute name="idtype" use="required">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="id" use="required">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:element name="Prices">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="n1:p" maxOccurs="unbounded" xmlns:n1="http://equityapi.morningstar.com/"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="response">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="n1:data" xmlns:n1="http://equityapi.morningstar.com/"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

由于 沃德森

1 个答案:

答案 0 :(得分:1)

您的XML响应不是命名空间限定的。如果您的XML是正确的,那么您需要从XML原理图中删除targetNamespace以反映这一点。