Désérialiser XML avec esperluette à l’aide de XmlSerializer ()

Le code suivant se brise lorsque le XML contient des données telles que “Lord & Hogan”. Aucune suggestion? Merci, ken

private T GetResponse(Ssortingng apiObject, Ssortingng query) { //Deserialize XML into the type specified. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(BuildRequestUri(apiObject, query)); using (HttpWebResponse resp = (HttpWebResponse)request.GetResponse()) { try { XmlSerializer ser = new XmlSerializer(typeof(T)); return (T)ser.Deserialize(resp.GetResponseStream()); } catch (Exception e) { error = e.InnerException.ToSsortingng(); return default(T); } } } 

À partir d’ ici :

Le standard XML n’autorise pas l’esperluette littérale à l’intérieur d’une balise XML, et un tel document ne pourra être analysé par aucun parsingur XML.

Autres questions similaires sur StackOverflow:

  • Comment échapper aux esperluettes en XML
  • Pourquoi RSS ne peut-il pas gérer l’esperluette?
  • parsingr XML avec esperluette
  • Désérialiser XML avec esperluette à l’aide de XmlSerializer ()
  • il y en a plus!

vous devriez encoder des données XML comme “Lord & Hogan”. Il devrait être encodé comme ceci:

"Lord & Hogan"

& in xml doit être remplacé par & sinon c’est un caractère invalide.

Voici une fonction qui peut être utilisée pour remplacer tous les caractères non autorisés: https://msdn.microsoft.com/en-us/library/system.security.securityelement.escape(v=vs.110).aspx