Sto tentando di creare un documento XML combinato utilizzando XInclude per essere non riparato tramite JAXB."Errore nel tentativo di analizzare il file XML" durante l'analisi utilizzando XInclude
Ecco il mio codice deserializzazione:
@Override
public T readFromReader(final Reader reader) throws Exception {
final Unmarshaller unmarshaller = createUnmarshaller();
final SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setXIncludeAware(true);
spf.setNamespaceAware(true);
//spf.setValidating(true);
final XMLReader xr = spf.newSAXParser().getXMLReader();
final SAXSource source = new SAXSource(xr, new InputSource(reader));
try {
final T object = (T) unmarshaller.unmarshal(source);
postReadSetup(object);
return object;
} catch (final Exception e) {
throw new RuntimeException("Cannot parse XML: Additional information is attached. Please ensure your XML is valid.", e);
}
}
Qui è la mia principale file xml:
<?xml version="1.0" encoding="UTF-8" ?>
<tag1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xi="http://www.w3.org/2001/XInclude"
xsi:schemaLocation="path-to-schema/schema.xsd">
<xi:include href="path-to-xml-files/included.xml"></xi:include>
</tag1>
E included.xml:
<?xml version="1.0" encoding="UTF-8"?>
<tag2> Some text </tag2>
Per unmarshal in realtà, Creo un nuovo FileReader
con il percorso del mio file xml (path-to-xml-files/main.xml - il percorso è cor rect perché può trovare chiaramente il file principale). Quando lo eseguo, tuttavia, c'è qualcosa di sbagliato nel file incluso. Sto ottenendo un UnmarshalException con una SAXParseException collegata con questo messaggio di errore: Errore nel tentativo di analizzare il file XML (href = 'percorso-xml-files/included.xml').
Quando unisco manualmente il contenuto di included.xml in main.xml, viene eseguito senza problemi.
Non riesco a capire se si tratta di un problema JAXB o XInclude, sebbene sospetti fortemente quest'ultimo.
Cosa mi manca?
Questo URL non esiste ... forse si potrebbe fare riferimento alla fonte ufficiale: http://xerces.apache.org/xerces2-j/features.html – devyndraen
Ho lo stesso approccio e l'impostazione della caratteristica SaxParserFactory 'http: // apache.org/xml/features/xinclude/fixup-base-uris' su false non ha aiutato qui. Qualcun altro che ha avuto successo con questo? –