2012-05-09 7 views
1

私はJaxbと連携してXMLをアンマーシャリングしています。私はJava 1.6を使用しています。これは、JWSDP 2.0を通じて生成されるクラスです。 (xjc.bat)しかし、私の問題は、私は生成されたクラスをコンパイルすることができませんです。私は以下のように構文エラーが発生しています。アンマーシャリング中にエラーが発生しました。「型の不一致:XmlAccessTypeからAccessTypeに変換できません」

"型の不一致:アクセスタイプにXmlAccessTypeから変換できません"

import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlType; 


@XmlAccessorType(XmlAccessType.FIELD)// here i am getting sytax error 
@XmlType(name = "personinfo", propOrder = { 
    "firstname", 
    "lastname", 
    "address" 
}) 
public class Personinfo { 

    @XmlElement(required = true) 
    protected String firstname; 
    @XmlElement(required = true) 
    protected String lastname; 
    @XmlElement(name = "Address", required = true) 
    protected PersonAddress address; 
............................ 

この点でいずれかのヘルプ、

答えて

4

はと私はあなたの質問からPersoninfoクラスを試してみましたことができますデモコードは以下の通りです。 Java SE 6(JAXB実装を含む)を使用しているので、JWSDP 2.0のJAXB APIがクラスパスにないことを確認する必要があります。

JWSDPはかなり古いです、私はまた、JavaのSE 6の代わりに、JWSDPからXJCユーティリティを使用することをお勧めします:

デモ

package forum10514244; 

import java.io.File; 
import javax.xml.bind.*; 
import javax.xml.transform.stream.StreamSource; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     JAXBContext jc = JAXBContext.newInstance(Personinfo.class); 

     File xml = new File("src/forum10514244/input.xml"); 
     Unmarshaller unmarshaller = jc.createUnmarshaller(); 
     JAXBElement<Personinfo> je = unmarshaller.unmarshal(new StreamSource(xml), Personinfo.class); 

     Marshaller marshaller = jc.createMarshaller(); 
     marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
     marshaller.marshal(je, System.out); 
    } 

} 

input.xml/Output

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<root> 
    <firstname>Jane</firstname> 
    <lastname>Doe</lastname> 
    <Address/> 
</root> 
+1

thanks alot、Blaise Doughan – Maddy

関連する問題