Sto lavorando a un piccolo progetto che sta ricevendo dati XML in forma di stringa da un'applicazione in esecuzione prolungata. Sto cercando di caricare questi dati di stringa in un XDocument
(System.Xml.Linq.XDocument
), e da lì in poi alcuni XML Magic e creare un file xlsx per un report sui dati.Eccezione XML: Carattere non valido
A volte, ricevo i dati con caratteri XML non validi e, quando provo ad analizzare la stringa in un XDocument
, viene visualizzato questo errore.
[System.Xml.XmlException] Messaggio: '?', Valore esadecimale 0x1C, è un carattere non valido.
Poiché non ho alcun controllo sull'applicazione remota, è possibile aspettarsi QUALSIASI tipo di carattere.
Sono ben consapevole del fatto che XML ha un modo in cui è possibile inserire caratteri come 
o qualcosa del genere.
Se possibile, mi piacerebbe SERIAMENTE conservare TUTTI i dati. Se no, lascia che sia.
ho pensato di modificare la stringa di risposta programatically, poi tornare indietro e cercando di ri-analizzare dovrebbe un'eccezione essere gettato, ma ho provato un paio di metodi e nessuno di loro sembra di successo.
Grazie per il vostro pensiero.
Codice è qualcosa lungo la linea di questo:
TextReader tr;
XDocument doc;
string response; //XML string received from server.
...
tr = new StringReader (response);
try
{
doc = XDocument.Load(tr);
}
catch (XmlException e)
{
//handle here?
}
In realtà, sta elaborando un XML tutto in una volta, come una stringa. –
@Matthew, sì, questo è l'esempio in cui chiama .ReadToEnd(), ma si può semplicemente usare .Read(), ecc. La mia ipotesi è che l'OP dovrà fare quello che hai detto. –
Questo collegamento era estremamente utile – Meiscooldude