2016-03-18 3 views
0

javax.xml.bind.UnmarshalException: Неожиданный элемент (URI: "", местные: "systemUnit") , Ожидаемые элементы < {http://xyz.abc.com/consumer/systems} systemUnit>javax.xml.bind.UnmarshalException: Неожиданный элемент (URI: "", местное: "systemUnit")

Meet исключение при демаршаллизации из XML


SystemUnit systemUnit; 
{ 
    final ByteArrayOutputStream originalStream = new ByteArrayOutputStream(); 
    try { 
     final TeeInputStream tee = new TeeInputStream(new FileInputStream("E:/ws/test.xml"), originalStream); 

     try { 
      final JAXBContext jc = JAXBContext.newInstance(SystemUnit.class); 
      final Unmarshaller unmarshaller = jc.createUnmarshaller(); 

      systemUnit = (SystemUnit)unmarshaller.unmarshal(tee); 

      System.out.println("Success"); // Pending NO exceptions during processing... 

     } 
     catch (final javax.xml.bind.JAXBException e) { 
      System.out.println("Exception came"); 
      e.printStackTrace(); 
     } 
     finally { 
      tee.close(); 
     } 

    //  contactLog.setMessage(originalStream.toByteArray()); 
    } 
    finally { 
     originalStream.close(); 
    } 

}


У меня есть аннотаций @XmlRootElement (имя = " systemUnit ") к классам systemUnit.

может кто-нибудь помочь мне решить этот вопрос

ответ

0

Попробуйте использовать http://xyz.abc.com/consumer/systems как пространство имен по умолчанию в вашем XML-файле.

XML должен содержать что-то вроде:

<systemUnit xmlns="http://xyz.abc.com/consumer/systems"> 
0

Вы настроили JAXB для ожидания XML-элемента с URI «http://xyz.abc.com/consumer/systems», но я думаю, что в вашем E: /ws/text.xml нет URI для элементов, входящих

Так рассмотреть различные решения:

1. Если вы не хотите использовать URI в XML, перенастроить JAXB таким образом

1.а - Если вы сгенерировали JAXB бобы из XML-схемы, посмотрите на

elementFormDefault="qualified" 

и

targetNamespace="http://xyz.abc.com/consumer/systems" 

в XSD файл

1.б - Если у вас есть код jaxb bean с аннотацией напрямую, рассмотрите удаление @XmlType(namespace="http://xyz.abc.com/consumer/systems") аннотация

1.c - Возможно, есть файл package-info.java, описывающий defa ult namespace для jaxb beans. Удалить это

2. Если вы хотите использовать URI в XML: исправить XML test.xml используя правильное пространство имен

Смежные вопросы