javax.xml.bind.UnmarshalException: непредвиденный элемент (uri: «urn: schemas-upnp-org: device-1-0», local: «root»). Ожидаемые элементы (нет) - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь разобрать файл XML, но я получаю эту ошибку в заголовке. Я искал другие вопросы, но я не уверен, что мне делать. Я использовал Pojo для преобразования моего XML-файла в объект Java, НО я не использовал никаких аннотаций XML . Вот мой XML-файл:

<root xmlns="urn:schemas-upnp-org:device-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:schemas-upnp-org:device:Basic:1</deviceType>
<friendlyName>dummyvariable</friendlyName>
<manufacturer>dummyvariable</manufacturer>
<manufacturerURL>dummyvariable</manufacturerURL>
<modelDescription>dummyvariable</modelDescription>
<modelName>dummyvariable</modelName>
<modelNumber>dummyvariable</modelNumber>
<modelURL/>
<serialNumber>dummyvariable</serialNumber>
<UDN>dummyvariable</UDN>
<serviceList>
<service>
<serviceType>urn:schemas-dummy-com:service:Dummy:1</serviceType>
<serviceId>urn:dummy-com:serviceId:dummy1</serviceId>
<controlURL>/dummy</controlURL>
<eventSubURL>/dummy</eventSubURL>
<SCPDURL>/dummy.xml</SCPDURL>
</service>
</serviceList>
<presentationURL>dummyvariable</presentationURL>
</device>
</root>

и вот мой метод получения:

public Root getURL(String urrl){
    BufferedReader br = null;

    try {
        URL url = new URL(urrl);

        br = new BufferedReader(new InputStreamReader(url.openStream()));
        String line;

        StringBuilder sb = new StringBuilder();

         while ((line = br.readLine()) != null) {

             sb.append(line);
             sb.append("\n");
         }

         StringReader sr = new StringReader(sb.toString());
         JAXBContext jaxbContext = JAXBContext.newInstance(PojoTest.class);
         Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
         PojoTest pojoTest = (PojoTest) unmarshaller.unmarshal(sr);

         System.out.println(pojoTest.toString());

         return pojoTest.getRoot();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

У меня есть 6 классов pojo. PojoTest возвращает Root, в котором есть переменные specVersion, device и xmlns, а значения, которые я на самом деле хочу вернуть, это производитель, modelName, modelNumber, serialNumber и presentationURL.

...