Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net将字符串转换为xml时使用无效字符_.net_Xml_Invalid Characters - Fatal编程技术网

.net将字符串转换为xml时使用无效字符

.net将字符串转换为xml时使用无效字符,.net,xml,invalid-characters,.net,Xml,Invalid Characters,我正在尝试将web响应转换为xml。然而,即使验证了xml字符串,当我尝试将响应字符串转换为XmlDocument时,也会出现“无效字符错误”。我还将已接受的答案应用于。代码如下: public XmlDocument RequestAndResponseHelper(string requestStr, string directory) { var request = (HttpWebRequest)WebRequest.Create(directory); var dat

我正在尝试将web响应转换为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;
}
public-XmlDocument-RequestAndResponseHelper(string-requestStr,string-directory)
{
var request=(HttpWebRequest)WebRequest.Create(目录);
var data=Encoding.ASCII.GetBytes(requestStr);
request.Method=“POST”;
request.ContentType=“text/xml”;
request.ContentLength=data.Length;
使用(var stream=request.GetRequestStream())
{
stream.Write(数据,0,数据长度);
}
var response=(HttpWebResponse)request.GetResponse();
string responseString=new StreamReader(response.GetResponseStream()).ReadToEnd();
//接受答案适用
StringBuilder newString=新的StringBuilder();
char ch;
for(int i=0;i0x001F)| ch='\t'| ch='\n'| ch='\r')
//如果使用4之前的.NET版本,请使用上述逻辑
if(XmlConvert.IsXmlChar(ch))//此方法在.NET4中是新的
{
newString.Append(ch);
}
}
字符串newStr=newString.ToString();
XmlDocument rs=新的XmlDocument();
rs.Load(newStr);
返回rs;
}
在这两种情况下(应用链接的answe中的代码或不应用链接的answe中的代码),Xml字符串都是有效且相同的

您能推荐其他解决方案吗?

您正在使用的解决方案,它意味着接受URL。我相信您的意思是使用它将文本解析为XML

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

您正在使用的是接受URL。我相信您的意思是使用它将文本解析为XML


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

非常感谢您的回答和推荐(:非常感谢您的回答和推荐(: