JAXB Unmarshal dużego pliku xml

0

Mam pliki xml o rozmiarze 1-2MB i chciałbym je wczytac do listy obiektów. Chciałem to zrobic przez JAXB bo mam odpowiednie XSD tylko problem pojawia się w momencie wczytywania tych plików ponieważ wyrzuca mi błędy mówiące o tym, że w jakimś miejscu jest niedomkniety tag lub cos w tym stylu, gdy wprawdzam w pliku to nie ma tam zadnych błędów. Gdy wczytywałem pliki o rozmiarze np 40KB nie bylo tego problemu, wszystko wczytywało sie prawidłowo. Czyli rozumiem ze jest jakiś problem w jaxb podczas unmarshalowania większych plików. Jest jakiś sposób, żeby to objeść? Inny sposób unmarshallingu raczej nie wchodzi w gre bo kazdy plik xml ma lekko inna strukture i obiekty, które mam potworzone z XSD.

Struktura plików xml:

<Request>
  <Header>
    <Name> </Name>
      <Id> </Id>
  </Header>
  <RequestItems>
   <Request>
     <Header>
       <Name></Name>
       <Id></Id>
     </Header>
     <ObjectName>
       <City></City>
       <Street></Street>
     </ObjectName>
     </Request>
    </RequestItems>
 </Request>

Wewnątrz tagów RequestItems jest lista obiektów Request i w obiektach Request ObjectName jest różny wzależności od pliku.

Robie unmrashal w najprostszy sposób i dla mniejszych plików działa prawidłowo, a na tych większych występują dziwne błędy niby składniowe ale rozumiem ze ucina po prostu linie bo jest za długa i dlatego są składniowe błędy.

JAXBContext jaxbContext = JAXBContext.newInstance(Request.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Request request = (Request) jaxbUnmarshaller.unmarshal(xmlFile);

0

A nie możesz sobie z tego xmla, jakimś XPathem pobrać grupy obiektów która Cię interesuje i unmarshalizować tę pobraną "małą porcję"?

1 użytkowników online, w tym zalogowanych: 0, gości: 1