WP7'ye XML yüklüyorum ve XML bildirimi ve doctype arasında bir satır yoksa, görmezden geldiğim halde doctype, bir InvalidOperationException olsun. Masaüstünde böyle bir hata yok.InvalidOperationException wp7 üzerinde xml bildirimi ve doctype arasında bir CR olmayan XML okuma
Kodum:
private static void Example()
{
const string works =
@"<?xml version=""1.0""?>
<!DOCTYPE example SYSTEM ""http://example.com/example.dtd""><hello></hello>";
const string fails =
@"<?xml version=""1.0""?><!DOCTYPE example SYSTEM ""http://example.com/example.dtd""><hello></hello>";
var textReader = new StringReader(works);
var xmlReaderSettings = new XmlReaderSettings {DtdProcessing = DtdProcessing.Ignore,};
var xmlReader = XmlReader.Create(textReader, xmlReaderSettings);
XDocument.Load(xmlReader); // No problem here
textReader = new StringReader(fails);
xmlReader = XmlReader.Create(textReader, xmlReaderSettings);
XDocument.Load(xmlReader); // Fails here
}
ikinci XDocument.Load XmlReader tipi XmlDeclaration bir düğüme olmamalı bir ınvalidoperationexception ve mesajın başarısız olur. Tek fark, ikinci durumda yeni bir satır olmamasıdır.
Bunu daha önce görmüş ve bir çözüm bulmuş mu? Bu masaüstü btw üzerinde çalışıyor - sadece WP7'de başarısız oluyor. Gerçek vakamda XML'i bir akıştan okuyorum, bu yüzden yeni çizgiyi el ile doğru yere enjekte etmek o kadar kolay olmayacak.
Damian
şimdi yeni satır enjekte TextReader sarıcı uyguladık için
Bunun için hiç hoş bir çözüm buldunuz mu? – mike
Çözümümden daha iyi bir şey yok - XML'yi akışa almam gerekiyordu, çünkü büyük olabilirdi. Hepsini belleğe yüklemek benim için bir seçenek değildi. – Damian
Lanet. Aslında XElement yerine XmlDocument sınıfına gitmeyi bitirdim. Çok daha iyi bir cehennem gibi görünüyor, XElement çocuk öğelerimi doğru şekilde tespit etmiyordu :( – mike