2016-11-03 7 views
0

웹 응답을 XML로 변환하려고합니다. 그러나 XML 문자열이 유효성을 검사하더라도 응답 문자열을 XmlDocument으로 변환하려고하면 "잘못된 문자 오류"가 표시됩니다. 또한 here에 수락 된 답변을 적용합니다. 코드는 다음과 같습니다 : 두 경우 모두 문자열을 XML로 변환 할 때 .net이 유효하지 않습니다.

public XmlDocument RequestAndResponseHelper(string requestStr, string directory) 
{ 
    var request = (HttpWebRequest)WebRequest.Create(directory); 

    var data = Encoding.ASCII.GetBytes(requestStr); 
    request.Method = "POST"; 
    request.ContentType = "text/xml"; 
    request.ContentLength = data.Length; 
    using (var stream = request.GetRequestStream()) 
    { 
     stream.Write(data, 0, data.Length); 
    } 
    var response = (HttpWebResponse)request.GetResponse(); 
    string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); 

    //Accepted answer applied 
    StringBuilder newString = new StringBuilder(); 
    char ch; 

    for (int i = 0; i < responseString.Length; i++) 
    { 

     ch = responseString[i]; 
     // remove any characters outside the valid UTF-8 range as well as all control characters 
     // except tabs and new lines 
     //if ((ch < 0x00FD && ch > 0x001F) || ch == '\t' || ch == '\n' || ch == '\r') 
     //if using .NET version prior to 4, use above logic 
     if (XmlConvert.IsXmlChar(ch)) //this method is new in .NET 4 
     { 
      newString.Append(ch); 
     } 
    } 
    String newStr = newString.ToString(); 

    XmlDocument rs = new XmlDocument(); 
    rs.Load(newStr); 

    return rs; 
} 

은 (연결 answe의 코드를 적용하거나 적용하지 않음), XML을 문자열이 유효하고 동일합니다.

다른 해결책을 제안 할 수 있습니까?

답변

2

XmlDocument.Load을 사용하고 있습니다. URL을 허용합니다. 텍스트을 XML로 구문 분석하는 XmlDocument.LoadXml을 사용한다고 생각합니다.

(. 여담으로, 나는 강하게 당신이 가능하게 할 수는 XML에 LINQ가 훨씬 좋네요 XML API의 경우 XDocument를 사용하여 업데이트하는 것이 좋습니다 것입니다.)

+0

응답에 대한과 (추천 주셔서 너무 감사합니다 –