2016-04-12 7 views
0

Ich verwende Windows.Data.Xml.Dom.XmlDocument, um eine XML-Zeichenfolge zu analysieren.Ausnahme für XMLDocument.LoadXml nur für bestimmte ISO-Zeichen

Der Code ist einfach

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.LoadXml(xmlString); 

Das Problem ist, dass es eine Ausnahme auslöst, wenn es einige spezielle Zeichen trifft. Ein Beispiel ist unten. (Ja, das XML ich Parsen bin, ist eigentlich HTML, aber es hat als XML analysiert werden)

Diese Saite wirft die Ausnahme

<div>So schnell. So vielf&auml;ltig. Soo lecker!</div> 

diese nicht

<div>So schnell. So vielfltig. Soo lecker!</div> 

<div>So schnell. So vielf&lt;ltig. Soo lecker!</div> 

Dies sind die Nachricht und Art der Ausnahme
Ausnahme von HRESULT: 0xC00CE002 System.Exception

Ich weiß nicht, warum nur bestimmte Zeichen die Ausnahme auslösen. Kann jemand helfen?

Antwort

2

Xml unterstützt nicht alle HTML-Zeichen und das von Ihnen erwähnte Zeichen ist ein HTML-Zeichen. Unterstützte Zeichenliste für xml und html: https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML

Xml unterstützt nur quot amp apos lt gt
Sie Hex-Wert der anderen Sonderzeichen zu verwenden, um für sie haben als XML geladen werden.

+0

Danke für Ihre Antwort. Sie haben die Quelle der Ausnahme ermittelt. Ich würde gerne eine andere Lösung für die Verwendung der Hexadezimalwerte anbieten. Man kann die Methode 'System.Net.WebUtility.HtmlDecode' verwenden, um die Zeichenfolge vor der Analyse zu dekodieren. Ich werde Ihre Antwort in ein paar Tagen akzeptieren (wie es Brauch ist) – Corcus