问题解决了,用了很傻的方法,先用asp将读取该文档,方法如下:<% url="http://isurvey.ipsos.com.cn/cor_web/point/index.asp?web=ipsos&project=网络使用习惯调查&got=a"rem 建立一个xmlhttp的对象,实现url的发送。 Set http=Server.CreateObject("Microsoft.XMLHTTP") http.Open "GET",url,False http.sendrem 建立一个xml解析程序的对象,然后接受。 Set xml=Server.CreateObject("Microsoft.XMLDOM") xml.Async=true xml.ValidateOnParse=False xml.Load(http.ResponseXML)rem 这里只是读取每一个节点的名字 If xml.ReadyState>2 Then
if xml.parseError.errorCode <> 0 then response.write "错误:读取数据失败" response.write xml.parseerror.errorcode response.write xml.parseerror.reason xml.loadxml(myxmlstr) response.End() else end if
set objnode=xml.documentElement
rem 这里开始读取每个节点的属性值,你接受到这个的时候不能直接入库,还要写一个入库的函数,对你想要入库的值进行入库,记住不是所有的值。 rem 更节点 response.Write "<?xml version=""1.0"" encoding=""gb2312"" ?>" response.Write "<user>" uidlength=objnode.ChildNodes.length-1 for i=0 to uidlength set objatr=objnode.childnodes.item(i) objatr1=objatr.attributes.length-1 response.Write "<who " for j=0 to objatr1 response.Write objatr.attributes.item(j).name response.Write "=" response.Write """" response.Write objatr.attributes.item(j).text response.Write """" response.Write " " next response.Write "></who>" next response.Write "</user>"Else End If Set http=Nothing Set xml=Nothing %>
使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。
--------------------------------------------------------------------------------文本内容中发现无效字符。处理资源 'http://isurvey.ipsos.com.cn/cor_web/point/index.asp?web=ipsos&project=网络使用习惯调查&got=a' 时出错。第 5 行,位置: 64 <who id="85772" username="5271" hezuoid="" PID="070367" pname="
我的代码这样写的:
DataSet ds = new DataSet();
XmlTextReader rd = new XmlTextReader("http://isurvey.ipsos.com.cn/cor_web/point/index.asp?web=ipsos&project=网络使用习惯调查&got=a");
ds.ReadXml(rd);
我处理时它报的异常信息是“缺少根元素”,不知道是怎么回事!
Response.Write("<hr><br>\n");
string result = "";
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);
req.Method = "GET";
HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
StreamReader rst = new StreamReader(rsp.GetResponseStream());
result = rst.ReadToEnd();
}
catch(Exception ex)
{
Response.Write("Errors: "+ex.Message+"<br><br>");
Response.Write("<hr><br>\n");
Response.End();
}
Response.Write("result - "+result);
Response.Write("<hr><br>\n");
先获取XML源文件,然后读取
-----------------------
你的那个方法我试了下,速度很慢,最终中止线程了,不过我觉得方法应该是对的,但这样做还是不能达到效果阿
---------------------
缺少根元素我也遇到过,而且跟你通过页面取数据的方式一样,问题存在于你读取的是网页的源文件,里面可能存在空格.你可以切掉得到内容前面的空格或其它字符,然后再用Reader来读取
---------------------------------------------------------------------------------
我觉得也是这样,但我不知道怎么去掉该去的空格,你能贴下你以前的解决方法吗?
Response.Write("<hr><br>\n");
string result = "";
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);
req.Method = "GET";
HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
StreamReader rst = new StreamReader(rsp.GetResponseStream());
result = rst.ReadToEnd();
}
catch(Exception ex)
{
Response.Write("Errors: "+ex.Message+"<br><br>");
Response.Write("<hr><br>\n");
Response.End();
}
Response.Write("result - "+result);
Response.Write("<hr><br>\n");
----------------------------------------------------------------------
这种写法运行的结果是“result -”,好像没有取到值。 UP!
1、获取输入流
2、保存为临时文件(xml)
3、dom4j解析数据,获取所需数据
ok,完工
url="http://isurvey.ipsos.com.cn/cor_web/point/index.asp?web=ipsos&project=网络使用习惯调查&got=a"rem 建立一个xmlhttp的对象,实现url的发送。
Set http=Server.CreateObject("Microsoft.XMLHTTP")
http.Open "GET",url,False
http.sendrem 建立一个xml解析程序的对象,然后接受。
Set xml=Server.CreateObject("Microsoft.XMLDOM")
xml.Async=true
xml.ValidateOnParse=False
xml.Load(http.ResponseXML)rem 这里只是读取每一个节点的名字
If xml.ReadyState>2 Then
if xml.parseError.errorCode <> 0 then
response.write "错误:读取数据失败"
response.write xml.parseerror.errorcode
response.write xml.parseerror.reason
xml.loadxml(myxmlstr)
response.End()
else
end if
set objnode=xml.documentElement
rem 这里开始读取每个节点的属性值,你接受到这个的时候不能直接入库,还要写一个入库的函数,对你想要入库的值进行入库,记住不是所有的值。
rem 更节点
response.Write "<?xml version=""1.0"" encoding=""gb2312"" ?>"
response.Write "<user>"
uidlength=objnode.ChildNodes.length-1 for i=0 to uidlength
set objatr=objnode.childnodes.item(i)
objatr1=objatr.attributes.length-1 response.Write "<who "
for j=0 to objatr1 response.Write objatr.attributes.item(j).name
response.Write "="
response.Write """" response.Write objatr.attributes.item(j).text
response.Write """"
response.Write " " next
response.Write "></who>"
next
response.Write "</user>"Else
End If
Set http=Nothing
Set xml=Nothing
%>
private DataSet GetDataSet(string url)
{ DataSet ds = new DataSet();
XmlTextReader myReader = new XmlTextReader(url);
ds.ReadXml(myReader);
return ds;
}
然后内容就存储在ds中了