unexpected element (uri:"", local:"Group"). Expected elements are <{}group>
Memenuhi pengecualian saat membatalkan marshalling dari xml
JAXBContext jc = JAXBContext.newInstance(Group.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Group group = (User)unmarshaller.unmarshal(new File("group.xml"));
Kelas grup tidak memiliki anotasi dan group.xml hanya berisi data.
Ada yang bisa jadi penyebabnya?
ObjectFactory
dari sumber yang dihasilkan, yang lebih mungkin terjadi jika Anda mencampur dua direktori sumber yang dihasilkan berbeda.Jawaban:
Sepertinya dokumen XML Anda memiliki elemen root "Grup", bukan "grup". Kamu bisa:
sumber
@XmlRootElement(name = "MB") @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "MB", propOrder = { "date", "time" })
tetapi saya mendapatkanunexpected element (uri:"http://xx.title.com/new/response", local:"MB"). Expected elements are <{}Date>,<{}MB>,<{}Time>
saya juga memiliki@XmlElement(name="Date", required = true)
atas setiap bidang. Di mana & Mengapa terjadi kesalahan? Saya juga sudah mencoba menghapus@XmlRootElement
!@XmlSchema
masukpackage-info.java
, diperbaiki sekarang.Anda perlu memasukkan package-info.java ke dalam paket jaxb yang Anda buat. Isinya harus seperti itu
sumber
Untungnya, kelas info paket tidak diperlukan. Saya dapat memperbaiki masalah saya dengan solusi iowatiger08.
Inilah perbaikan saya yang menunjukkan pesan kesalahan untuk membantu menggabungkan titik-titik untuk beberapa orang.
Pesan eror
Kode sebelum diperbaiki
Kode demi perbaikan
Anda dapat melihat namespace ditambahkan ke @XmlRootElement seperti yang ditunjukkan dalam pesan kesalahan.
sumber
Setelah melihat lebih jauh, elemen root harus dikaitkan dengan ruang nama skema seperti yang diperhatikan Blaise. Namun, saya tidak memiliki java info paket. Jadi tanpa menggunakan anotasi @XMLSchema, saya dapat memperbaiki masalah ini dengan menggunakan
Semoga ini membantu!
sumber
Ini adalah perbaikan untuk kasus penggunaan khusus yang cukup tetapi selalu berhasil. Jika Anda menggunakan generator Eclipse Jaxb, ia membuat file bernama info-paket.
Jika Anda menghapus file ini, ini akan memungkinkan xml yang lebih umum untuk diurai. Cobalah!
sumber
Saya memiliki masalah yang sama .. Ini membantu saya, saya menentukan nama bidang yang sama dari kelas saya sebagai nama tag di file xml (file tersebut berasal dari sistem eksternal).
Sebagai contoh:
File xml saya:
Kelas Respon Saya:
Kelas ESList saya:
Kelas Item saya:
Kelas RegionList saya:
Kelas DemoUnmarshalling saya:
Memberikan:
sumber
Anda perlu menempatkan
package-info.java
kelas dalam paket konteksPath dan meletakkan kode di bawah ini di kelas yang sama:sumber
Aku juga. Nama kelas pemetaan adalah
Mbean
tetapi nama root tagmbean
jadi saya harus menambahkan anotasi:sumber
Saya memiliki masalah yang sama. Saya menambahkan atribut berikut ke
<xs:schema..>
elementFormDefault = "kualifikasi" atributFormDefault = "tidak memenuhi syarat"dan membuat ulang kelas java dengan menjalankan xjc, yang mengoreksi package-info.java.
Ini memperbaiki masalah saya.
sumber
Saya sudah memiliki masalah yang sama dan saya hanya mengubah seperti di bawah ini:
sumber
Saya memiliki masalah yang sama, masalah saya adalah, bahwa saya memiliki dua layanan web yang berbeda dengan dua file wsdl yang berbeda. Saya membuat sumber dalam paket yang sama untuk kedua layanan web, yang tampaknya menjadi masalah. Saya kira itu karena ObjectFactory dan mungkin juga karena package-info.java - karena itu hanya dibuat sekali.
Saya menyelesaikannya, dengan membuat sumber untuk setiap layanan web dalam paket yang berbeda. Dengan cara ini, Anda juga memiliki dua file ObjectFactories dan package-info.java yang berbeda.
sumber
Jika Anda menjadi gila karena ini hanya terjadi dalam Tes Anda dan Anda menggunakan PowerMock ini solusinya, tambahkan di atas kelas tes Anda:
sumber
Tidak ada solusi yang disebutkan di sini yang berhasil untuk saya, saya masih mendapatkan:
Pengecualian di utas "main" javax.xml.bind.UnmarshalException: elemen tak terduga (uri: "java: XXX.XX.XX.XXX", lokal: "XXXXX")
Setelah banyak penelitian melalui situs lain di bawah kode bekerja untuk saya
sumber
Jika tidak ada satu pun cara di atas yang berhasil, coba tambahkan
@XmlRootElement(name="Group")
ke kelas Grup.sumber