C#程序设计.唐大仕.10.网络信息获取及 xml 处理

第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 类

  • DownloadDataDownloadFile
  • 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:由哪个页面进行的访问

代码示例

  • 示例 1
    • 下载网页,以字符串的形式输出
  • 示例 2
    • 从底层开始编写,下载网页,以字符串的形式输出
  • 下载图片

2. xml 处理

xml 内容

  • 声明
1
<?xml version="1.0" encoding="utf-8" ?>
  • 实体
1
<!Entity ...>
  • 元素
1
<book> ... </book>
  • 属性
1
<book title="..."/>
  • 注释
1
<!-- some comments -->
  • 特殊字符
1
2
3
4
5
&      &amp;
< &lt;
> &gt;
" &quot;
' &apos;

处理方式

  • DOM
    • 文档对象模型(Document Object Model)
    • 将整个文档读入内存,建立树状结构
  • SAX
    • XML 解析简单的 API(Simple API for XML)
    • 边读边处理

XML 类

1
using System.XML;
  • XmlDocument

  • XmlNode

    • XmlDocument, XmlElement
    • XmlAttribute, XmlEntity
  • XmlNode 的操作

    • 查询:Xpath
    • 增加:AppendChild, PrependChild, InsertBefore, InsertAfter
    • 删改:RemoveChild, ReplaceChild, RemoveAll
  • XMlTextReader、XmlTextWriter

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;

// 根据 xpath 进行查找
XmlNodeList nodes = root.SelectNodes( strXPath );
XmlNode node = root.SelectSingleNode( strXPath );

xslt