2010-03-28 32 views
5

我試圖解析這個XML,但C#一直拋出一個異常,說它有無效的字符。我無法直接從消息框中複製文本,因此我已經對其進行了篩選。XmlTextReader問題

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

編輯:複製的文本

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

下面的代碼來獲取字符串

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

您可以按Ctrl + C複製標準MessageBox的文本。 – SLaks 2010-03-28 01:26:04

+0

感謝您的提示。現在我使用HexEdit對其進行了測試,並且它使用.net 3.5來清理:/ – 2010-03-28 01:43:34

+3

?如果是這樣,爲什麼不使用LINQ to XML?對XML進行字符串處理是純粹的虐狂行爲! :) – 2010-03-28 02:03:46

回答

9

的XmlTextReader的期待包含XML而不是XML本身作爲一個網址串。要使用XmlTextReader解析XML,您必須創建一個流並將其提供給XmlTextReader

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

嗯,我被拋棄了,因爲msdn文檔說XmlTextReader重載接受一個字符串。 – 2010-03-28 21:49:39