Mam plik XML:JAXB: Jak mogę unmarshal XML bez nazw
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object>
<str>the type</str>
<bool type="boolean">true</bool>
</object>
I chcę unmarshal go do obiektu klasy poniżej
@XmlRootElement(name="object")
public class Spec {
public String str;
public Object bool;
}
Jak mogę to zrobić ? O ile nie określiłem przestrzeni nazw (patrz niżej), to nie działa.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object>
<str>the type</str>
<bool xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:type="xs:boolean">true</bool>
</object>
Dzięki za odpowiedź, Blaise. Nie mam problemów z posiadaniem przestrzeni nazw. Ale czy jest możliwe, że nie ma przestrzeni nazw w XML (ponieważ będzie to miało kontakt z użytkownikami dev), ale zachowam te informacje za pomocą adnotacji klasy Java, tak, że gdy jaxb parsuje XML, widzi "typ" i wie "aha, to jest przestrzeni nazw "xsi" zgodnie z deklaracją klasy Java ". To samo z "xs: boolean". Czy widzisz, co mówię? Lub nadal nie jest możliwe? Potrzebuję tego, ponieważ nasi użytkownicy dev zamierzają tworzyć takie deklaracje XML i musimy je zwolnić do Javy. – Andrey
@Andrey - Możesz wykonać tę pracę, poniżej jest podejście, które możesz zrobić dla niemych. –
Cześć Blaise. Usunięcie przestrzeni nazw dla atrybutu "typ" działało świetnie, DZIĘKI DUŻO !!!, ale nadal mogę usunąć deklarację przestrzeni nazw "xs" dla wartości atrybutu "type" - "xs: boolean". Grałem z nadpisaniem niektórych metod StreamReaderDelegate, ale bez powodzenia. – Andrey