2016-04-12 22 views
0

Bir xml dizesini ayrıştırmak için Windows.Data.Xml.Dom.XmlDocument kullanıyorum.Yalnızca belirli ISO karakterleri için XMLDocument.LoadXml özel durumu

kod sorunu bazı özel karakterleri karşılaştığında bir istisna atar olmasıdır

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

basittir. Bir örnek aşağıda. (Evet ayrıştırma am XML aslında html ama XML olarak ayrıştırılması gerekir) Bu do Bu dize istisna

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

atar

değil

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

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

Bunlar mesajı ve istisnanın türü.
HRESULT özel durum: 0xC00CE002 System.Exception

Neden sadece belirli karakterlerin istisnayı tetiklediğini bilmiyorum. Herhangi biri yardım edebilir mi?

cevap

2

Xml, tüm html karakterlerini desteklemez ve belirttiğiniz karakter bir html karakteridir. Desteklenen karakter listesi xml ve html için: https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML

Xml sadece quot amp apos lt gt
Onları xml olarak yüklenecek için sırayla diğer özel karakterlerin onaltılık değerini kullanmak zorunda kalacak destekler.

+0

Cevabınız için teşekkür ederiz. İstisna kaynağını belirlediniz. Altıgen değerlerini kullanmak için başka bir çözüm sunmak istiyorum. Biri, ayrıştırmadan önce dizeyi çözmek için 'System.Net.WebUtility.HtmlDecode' yöntemini kullanabilir. Cevabınızı birkaç gün içinde kabul edeceğim (özel olduğu gibi) – Corcus

İlgili konular