2010-03-28 7 views
5

Je suis essayer d'analyser ce fichier XML, mais C# continue de lancer une exception en disant qu'il a des caractères non valides. Je ne peux pas copier le texte directement dans la boîte de message, donc je l'ai filtré.XmlTextReader question

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

Edit: texte copié

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

Voici le code pour obtenir la chaîne

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

Vous pouvez appuyer sur Ctrl + C pour copier le texte d'un MessageBox standard. – SLaks

+0

Merci pour le conseil. Maintenant, je l'ai testé avec HexEdit et son nettoyage:/ –

+3

utilisez-vous. Net 3.5? Si oui, pourquoi ne pas utiliser LINQ to XML? Faire de la manipulation de chaînes sur XML est du pur masochisme! :) –

Répondre

9

XmlTextReader attend une URL contenant le XML et non le XML lui-même comme chaîne. Pour analyser le XML avec un XmlTextReader vous devez créer un flux et de fournir à la XmlTextReader

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

Ah, j'ai été rejeté parce que le Doc msdn a dit que XmlTextReader était surchargé pour accepter une chaîne. –

Questions connexes