DataSet ds = new DataSet();
//StringReader sr = new StringReader(xmlstr);
string url ="http://www.xx.net/xx.aspx";
WebRequest wreq = WebRequest.Create(url);
wreq.Method = "get";
HttpWebResponse wersp = (HttpWebResponse)wreq.GetResponse();
Stream s = wersp.GetResponseStream();
StreamReader sd = new StreamReader(s, System.Text.Encoding.GetEncoding("gb2312"));
string sdstr = sd.ReadToEnd();
if (!string.IsNullOrEmpty(sdstr))
{
StringReader strred = new StringReader(sdstr);
ds.ReadXml(sdstr);
sd.Close();
if (ds != null && ds.Tables.Count > 0)
{
this.gvInfo.DataSource = ds.Tables[0].DefaultView;
}
}
在ds.ReadXml(sdstr);时出现"路径中有非法字符"的错误
//StringReader sr = new StringReader(xmlstr);
string url ="http://www.xx.net/xx.aspx";
WebRequest wreq = WebRequest.Create(url);
wreq.Method = "get";
HttpWebResponse wersp = (HttpWebResponse)wreq.GetResponse();
Stream s = wersp.GetResponseStream();
StreamReader sd = new StreamReader(s, System.Text.Encoding.GetEncoding("gb2312"));
string sdstr = sd.ReadToEnd();
if (!string.IsNullOrEmpty(sdstr))
{
StringReader strred = new StringReader(sdstr);
ds.ReadXml(sdstr);
sd.Close();
if (ds != null && ds.Tables.Count > 0)
{
this.gvInfo.DataSource = ds.Tables[0].DefaultView;
}
}
在ds.ReadXml(sdstr);时出现"路径中有非法字符"的错误
DataSet.ReadXml (String) 参数是xml文件名
而且你报的“路径中有非法字符”显然是文件路径不对
你还是直接用流试试
DataSet.ReadXml(sd )
得到的xml如下<?xml version='1.0' standalone='yes'?><guestlist><guest><guestid>guest1678970144</guestid><flag>0</flag><kehuid></kehuid><lastdate>2008-3-29 12:23:31</lastdate></guest></guestlist>
你打出来看看,是不是和上面的一样,
上面的XML是合法的,应该不会有这种情况
真的很奇怪的问题.
DataTable dt = this.getDtForXml(aa);
this.gvInfo.DataSource = dt;
private DataTable getDtForXml(string xmlstr)
{
DataTable dt = new DataTable("guest");
dt.Columns.Add("guestid", typeof(string));
dt.Columns.Add("flag", typeof(string));
dt.Columns.Add("kehuid", typeof(string));
dt.Columns.Add("lastdate", typeof(string));
ArrayList al = new ArrayList();
Regex rg = new Regex("(?<=<guest>).*?(?=</guest>)", RegexOptions.IgnoreCase);
MatchCollection mc = rg.Matches(xmlstr);
foreach (Match mt in mc)
{
if (!string.IsNullOrEmpty(mt.Value))
{
al.Add(mt.Value);
}
}
for (int i = 0; i < al.Count; i++)
{
DataRow dr = dt.NewRow();
dr["guestid"] = this.getXmlColl(Convert.ToString(al[i]), "guestid");
dr["flag"] = this.getXmlColl(Convert.ToString(al[i]), "flag");
dr["kehuid"] = this.getXmlColl(Convert.ToString(al[i]), "kehuid");
dr["lastdate"] = this.getXmlColl(Convert.ToString(al[i]), "lastdate");
dt.Rows.Add(dr);
}
return dt;
}
private string getXmlColl(string instr,string collname)
{
string outs = "";
ArrayList al = new ArrayList();
Regex rg = new Regex("(?<=<" + collname + ">).*?(?=</" + collname + ">)", RegexOptions.IgnoreCase);
MatchCollection mc = rg.Matches(instr);
foreach (Match mt in mc)
{
if (!string.IsNullOrEmpty(mt.Value))
{
outs=mt.Value;
}
}
return outs;
}