2011-04-06 101 views
0

我收到错误这样,当在文档错误的顶层无效。 XML页面无法显示使用样式表 无法查看XML输入。请更正错误,然后点击刷新按钮,或稍后再试。 在按钮点击我写这个。读取XML文件

String strUrl = "https://secure.dev.gateway.gov.uk/submission";  
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl); 
req.ContentType  = "text/xml"; 
req.Method   = "POST"; 
req.Accept   = "text/xml"; 
req.PreAuthenticate = true; 
req.Credentials  = new NetworkCredential("189", ""); 
req.UseDefaultCredentials = true; 

System.IO.Stream stream = req.GetRequestStream(); 
string strXML = GetXmlString("C:\\Documents and Settings\\com\\My Documents\\Downloads\\18march\\VatDecRequest_ValidSample v1.0.xml"); 
byte[] arrBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(strXML); 
stream.Write(arrBytes, 0, arrBytes.Length); 
stream.Close(); 
WebResponse resp = req.GetResponse(); 
Stream respStream = resp.GetResponseStream(); 
StreamReader rdr = new StreamReader(respStream, System.Text.Encoding.ASCII); 
Response.ContentType = "text/xml"; 
string strResponse = rdr.ReadToEnd(); 
XmlDocument xmldoc = new XmlDocument(); 
xmldoc.LoadXml(strResponse); 
xmldoc.Save("C:\\test9.xml"); 
+0

我认为错误是在XML文件或样式表。你能否将它们包含在你的问题中(以防它们太大)? – 2011-04-06 10:47:15

+0

您正在读取和写入ASCII - 你看,这始终是真的吗?尝试使用UTF-8编码,它涵盖了ASCII码,如果出现则可以处理unicode。 (管线1返回的Unicode链接据我可以看到) – 2011-04-06 10:52:58

回答

2

为什么要将文件加载为字符串,然后使用ASCII编码它?为什么不直接加载二进制数据并直接提供? (File.ReadAllBytes可能是你的朋友。)

我怀疑是XML文件是实际上在UTF-8,很可能与字节顺序标记不能以ASCII表示。

这同样适用于请求和响应都 - 在可行情况下只得到XML解析器来处理二进制流,并找出编码本身。