XMLStreamReader를 사용하여 중첩 된 XML 파일을 비 정렬 화하려고합니다. 나는 다음과 같은 클래스를 만들었습니다XSD없이 XMLStreamReader를 사용하여 복잡한 중첩 XML 파일을 비 정렬
<?xml version="1.0" encoding="UTF-8"?>
<tns:Envelope
xmlns:tns="http://www.w3.org/2003/05/soap-envelope-dial"
xmlns:lmic="http://www.example.com"
xmlns:producer="http://example1.com/"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:ns5="http://www.example.com/dial/3/0">
<tns:header>
...
...
</tns:header>
<tns:body>
<producer:Producer id="1234">
<producer:GenParty>
<producer:NameInfo>
<producer:Comm>
<producer:SuppName>DATA</producer:SuppName>
<producer:ContractNumber>123456</producer:ContractNumber>
</producer:Comm>
</producer:NameInfo>
<producer:Address>
<Street>ABC</Street>
<Country>DEF</Country>
...
...
</prodcer:Address>
<producer:Address>
<Street>ABC</Street>
<Country>DEF</Country>
...
...
</prodcer:Address>
</producer:GenParty>
</producer:Producer>
</tns:body>
</tns:emvelope>
:
@XmlRootElement(name="Producer",namespace="http://example.com/")
@XmlAccessorType(XmlAccessType.FIELD)
Class Producer {
private GenParty;
// getter method of class GenParty
// setter method of class GenParty
}
@XmlRootElement(name="GenParty")
@XmlAccessorType(XmlAccessType.FIELD)
class GenParty {
private NameInfo;
private List<Address> address;
//getter of both fields
// setter of both fields
}
을 이후 클래스 정의 내 XML 파일은 다음과 같다.
내가 태그에 진출하는 XMLStreamReader를 사용하고하고 나는 내 unmarshaler 코드를 쓰고 있어요 :
JAXBContext jc = JAXBContext.newInstance(Producer.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Producer producer = unmarshaller.unmarshal(xsr,Producer.class).getValue();
는 그러나, 나는 프로듀서 객체로 설정 null 값을 얻고있다. 내가 잘못하고있는 것이 있습니까? 간단한 XML 파일을 비 정렬화할 수 있지만이 중첩 수준은 나를 위해 문제를 만들고 있습니다. 누군가가 쉽게 할 수 있는지 또는 내 코드 스켈레톤에서 변경해야 할 사항을 제안 할 수 있습니까?
미리 감사드립니다.
JAXB의 잘못된 이름 공간 때문입니까? –
XML은'xmlns : producer = "http://example1.com/"네임 스페이스를 사용하지만 Producer 클래스는'namespace = "http://example.com/"' –