Недопустимые символы.net при преобразовании строки в xml

Я пытаюсь преобразовать веб-ответ в XML. Однако, даже если строка XML проверена, я получаю "ошибку недопустимого символа" при попытке преобразовать строку ответа в XmlDocument, Я также применяю принятый ответ здесь. Код ниже:

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;
}

В обоих случаях (применяя код в связанном ответе или не применяя его) строки XML действительны и одинаковы.

Можете ли вы предложить другое решение?

1 ответ

Решение

Вы используете XmlDocument.Load, который предназначен для принятия URL. Я полагаю, что вы хотели использовать XmlDocument.LoadXml который анализирует текст как XML.

(Кроме того, я настоятельно рекомендую обновить для использования XDocument если возможно. LINQ to XML - намного более приятный XML API.)

Другие вопросы по тегам