【问题标题】:.net invalid characters when converting string to xml将字符串转换为xml时.net无效字符
【发布时间】:2016-11-03 07:41:09
【问题描述】:

我正在尝试将 Web 响应转换为 xml。但是,即使验证了 xml 字符串,当我尝试将响应字符串转换为 XmlDocument 时,我也会收到“无效字符错误”。我还在here 中应用了已接受的答案。代码如下:

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 字符串都是有效且相同的。

您能提出任何其他解决方案吗?

【问题讨论】:

    标签: .net xml invalid-characters


    【解决方案1】:

    您使用的是XmlDocument.Load,它旨在接受一个网址。我相信您的意思是使用 XmlDocument.LoadXmltext 解析为 XML。

    (顺便说一句,如果可能的话,我强烈建议您更新为使用XDocument。LINQ to XML 是一个更好的 XML API。)

    【讨论】:

    • 非常感谢您的回答和推荐(:
    猜你喜欢
    • 1970-01-01
    • 2012-10-26
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 2010-09-08
    • 2018-09-14
    • 2019-10-29
    相关资源
    最近更新 更多