0%
第10章 网络信息获取及 xml
处理
1. 网络信息获取
网络信息浏览
- 一些概念
- HTTP 协议
- 客户端与服务端
- Request 与 Response
- Stream
- Get(显式写在网址后面)与 Post
- cookie(浏览器记录的一些关于该服务器的信息)
网络流传输查看工具
- Fiddler2、NetworkMoniter、Visual
Sniffer、httpwatch、WireShark
- Chrome(F12 \(\to\)
Network)、FireFox(安装 FireBug)
System.Web
- 提供支持浏览器/服务器通讯的类和接口
- 提供有关当前 HTTP 请求的大量信息的 Request 类
- 管理 HTTP 到客户端的输出的 Response 类
- 以及提供对服务器端实用工具和进程的访问的 HttpServerUtility 对象
- 还包括用于Cookie操作、文件传输、异常信息和输出缓存控制的类
- 类
Cookie |
提供对cookie(一种网络服务器传递给浏览器的信息)进行管理的一套方法和属性 |
Dns |
提供简单的域名协议功能 |
EndPoint |
表示网络地址的抽象类 |
FileWebRequest |
与 file:// 开头的 URl
地址进行交互,以访问本地文件 |
FileWebResponse |
通过 file:// URI
地址提供对文件系统的只读访问 |
HttpWebRequest |
授权客户向 HTTP 服务器发送请求 |
HttpWebResponse |
授权客户接收 HTTP 服务器的回答信息 |
IPAddress |
表示一个 IP 地址 |
IPEndPoint |
表示一个IP终端(IP地址加端口号) |
IPHostEntry |
与带有一组别名和匹配 IP 地址的 DNS
登录建立连接 |
WebClient |
提供向 URL 传送数据和从 URI
接收数据的通用方法 |
WebException |
使用网络访问时产生的异常 |
WebClient 类
- DownloadData、DownloadFile
- DownloadString
- UploadData、UploadFile
- OpenRead、OpenWrite
1 2 3 4 5
| string url= @"http://www.baidu.com"; WebClientclient = new WebClient(); byte[] pageData = client.DownloadData(url); string pageHtml = Encoding.Default.GetString(pageData); Console.WriteLine(pageHtml);
|
1 2 3 4
| WebRequestmyRequest = WebRequest.Create("http://www.contoso.com"); WebResponsemyResponse = myRequest.GetResponse(); Stream requestStream = myRequest.GetRequestStream() Stream receiveStream = myWebResponse.GetResponseStream();
|
注意点
- Credentials:主要指用户名、密码等
- Header:头部信息
- Cookie:Cookie信息
- User-Agent:用户代理(浏览器)
- Refer:由哪个页面进行的访问
代码示例
2. xml 处理
xml 内容
1
| <?xml version="1.0" encoding="utf-8" ?>
|
1 2 3 4 5
| & & < < > > " " ' '
|
处理方式
- DOM
- 文档对象模型(Document Object Model)
- 将整个文档读入内存,建立树状结构
- SAX
- XML 解析简单的 API(Simple API for XML)
- 边读边处理
XML 类
3. Xpath
- 类似于文件路径,是 xml 中的从根节点到子结点路径的查询
- 元素
- Axes(路径)
- 第几个子结点
[1]
- 属性:
@
- 条件:
[]
- 例子
/books/book/@title
//price
para[@type=" warning"][5]
1 2 3 4 5 6 7
| XmlDocument doc = new XmlDocument(); doc.LoadXml( strXml ); XmlElement root = doc.DocumentElement;
XmlNodeList nodes = root.SelectNodes( strXPath ); XmlNode node = root.SelectSingleNode( strXPath );
|
xslt
- 根据 xslt 将 xml 转化为 html
- 代码示例