2010-03-28 19 views
5

Bu xml'yi ayrıştırmaya çalışıyorum ama C#, geçersiz karakterleri olduğunu söyleyerek bir istisna atmaya devam ediyor. Metni doğrudan mesaj kutusundan kopyalayamıyorum, bu yüzden onu taradım.XmlTextReader issue

http://img29.imageshack.us/img29/694/xmler.jpg

Düzenleme: Kopyalanan metni Burayı

<?xml version="1.0" encoding="UTF-8"?><user><id>9572</id><screen_name>fgfdgfdgfdgffg44</screen_name></user> 

dize

string strRetPage = System.Text.Encoding.GetEncoding(1251).GetString(RecvBytes, 0, bytes); 

while (bytes > 0) 
{ 
    bytes = socket.Receive(RecvBytes, RecvBytes.Length, 0); 
    strRetPage = strRetPage + System.Text.Encoding.GetEncoding(1251).GetString(RecvBytes, 0, bytes); 
} 
start = strRetPage.IndexOf("<?xml"); 
string servReply = strRetPage.Substring(start); 
servReply = servReply.Trim(); 
servReply = servReply.Replace("\r", ""); 
servReply = servReply.Replace("\n", ""); 
servReply = servReply.Replace("\t", ""); 

XmlTextReader txtRdr = new XmlTextReader(servReply); 
+0

standart bir MessageBox metin kopyalamak için Ctrl + C tuşlarına basabilirsiniz bunu sağlamanız gerekir. – SLaks

+0

Bahşiş için teşekkürler. Şimdi HexEdit ile test ettim ve temiz:/ –

+3

.net 3.5 kullanıyor musunuz? Eğer öyleyse, neden XML için LINQ kullanmıyorsunuz? XML'de dize manipülasyon yapmak saf mazoşizmdir! :) –

cevap

9

XmlTextReader XML değil, bir XML kendisi içeren bir URL beklediğini almak için kod dize. Bir XmlTextReader ile XML ayrıştırmak için bir akışı yaratır ve XmlTextReader

using (StringReader stringReader = new StringReader(servReply)) 
{ 
    using (XmlTextReader xmlTextReader = new XmlTextReader(stringReader)) 
    { 
     // Read the xml 
    } 
} 
+0

Ah, msdn doc XmlTextReader'ın bir dizeyi kabul etmek için aşırı yüklendiğini söylediği için atıldım. –