Ho scritto una classe che estende XmlUrlResolver per risolvere i riferimenti agli identificatori pubblici nei documenti XML. Per esempio, quando un documento XML inizia con:Come utilizzare un XmlResolver personalizzato per risolvere gli identificatori pubblici * all'interno di * un DTD?
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE chapter PUBLIC "-//Custom//EN" "custom.dtd">
L'identificatore pubblico "- // personalizzato/EN" viene passato al parametro relativeURI
della mia sovrascritto ResolveUri()
metodo, e ha deliberato la posizione attuale DTD sul disco. Funziona correttamente.
Il problema si verifica quando è presente un riferimento di entità all'interno della DTD stessa. Per esempio:
<!ENTITY % tablemodel
PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN"
"soextblx.dtd">
In questo caso, l'identificatore di sistema "soextblx.dtd" è passato a ResolveUri()
anziché l'identificatore pubblico "- // // DTD OASIS XML Cambio tavolo Modello 19.990.315 // EN".
C'è qualche modo per realizzare questo? Anche l'override di GetEntity()
sembra non funzionare, perché viene anche passato l'identificatore di sistema.
Potresti aggiungere il codice nella tua classe? – Cine