HtmlAttribute HTML属性处理类
HtmlAttribute 在HtmlAgilityPack扮演的是一个HTML代码属性的容器,同时提供了用于处理HTML属性的一些功能。
一、属性
int Line { get; } 获取文档中的此属性的行数。
int LinePosition { get; } 获取文档中此属性所在列数
string Name { get; set; } 当前属性的名称
string OriginalName { get; } 当前属性未经更改的属性
HtmlDocument OwnerDocument { get; } 返回当前属性所在的文档引用
HtmlNode OwnerNode { get; } 当前属性所在节点的引用
AttributeValueQuote QuoteType { get; set; } 返回一个枚举值,指示属性包装在单引号里还是双引号里
int StreamPosition { get; } 此属性开始位置位于整个文档的字符位置
string Value { get; set; } 此属性的值
string XPath { get; } 返回属性的访问XPath表达式
二、方法
HtmlAttribute Clone(); 克隆到另外一个HttpAttribute
int CompareTo(object obj); 将当前实例与另一个属性进行比较。比较基于属性的名称。
void Remove(); 从文档中移除该属性

static void Main(string[] args)
{
//<ul class="user_match clear">
// <li>年龄:21~30之间</li>
// <li>婚史:未婚</li>
// <li>地区:不限</li>
// <li>身高:175~185厘米之间</li>
// <li>学历:不限</li>
// <li>职业:不限</li>
// <li>月薪:不限</li>
// <li>住房:不限</li>
// <li>购车:不限</li>
//</ul> WebClient wc = new WebClient();
wc.BaseAddress = "http://www.juedui100.com/";
wc.Encoding = Encoding.UTF8;
HtmlDocument doc = new HtmlDocument();
string html = wc.DownloadString("user/6971070.html");
doc.LoadHtml(html);
HtmlNode node = doc.DocumentNode.SelectSingleNode("/html/body/div[4]/div[1]/div[2]/ul[1]"); //根据XPath查找节点,跟XmlNode差不多
HtmlAttribute attr = node.Attributes["class"];
Console.WriteLine(attr.Line); //输出 155 此属性所在文档的行数
Console.WriteLine(attr.LinePosition); //输出 6 此属性位于文档的列数
Console.WriteLine(attr.Name); //输出 class 属性名
Console.WriteLine(attr.OriginalName); //输出 class 未经过更改的原始属性名
Console.WriteLine(attr.OwnerDocument); //获取所在文档
HtmlNode node1 = attr.OwnerNode;
Console.WriteLine(node1.Name); //输出 ul
AttributeValueQuote ty = attr.QuoteType; //指定的数据包装在双引号里还是单引号里
Console.WriteLine(ty.ToString()); //输出 DoubleQuote AttributeValueQuote是一个枚举,只有两个值SingleQuote与DoubleQuote
Console.WriteLine(attr.StreamPosition); //输出7355 属性所在文档的字符位置
Console.WriteLine(attr.Value); //输出 user_match clear 属性的值
Console.WriteLine(attr.XPath); //输出 /html[1]/body[1]/div[4]/div[1]/div[2]/ul[1]/@class[1] 当前属性的访问XPath表达式 HtmlAttribute attr1 = attr.Clone();
Console.WriteLine(attr1.Name + " : " + attr1.Value); //输出 class : user_match clear
//Compareto(Object obj)
attr.Remove();
Console.WriteLine(node.OuterHtml); //输出 <ul><li>.....</ul> 该属性已被移除 Console.ReadKey();
}

HtmlAttribute HTML属性处理类的更多相关文章
- 【Python】[面性对象编程] 获取对象信息,实例属性和类属性
获取对象信息1.使用isinstance()判断class类型2.dir() 返回一个对象的所有属性和方法3.如果试图获取不存在的对象会抛出异常[AttributeError]4.正确利用对象内置函数 ...
- python基础——实例属性和类属性
python基础——实例属性和类属性 由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(objec ...
- 自己通过反射写的一个属性copy类
package com.xxx.beancopier; import java.lang.annotation.Documented; import java.lang.annotation.Elem ...
- Python面向对象 -- 继承和多态、获取对象信息、实例属性和类属性
继承和多态 继承的好处: 1,子类可以使用父类的全部功能 2,多态:当子类和父类都存在相同的方法时,子类的方法会覆盖父类的方法,即调用时会调用子类的方法.这就是继承的另一个好处:多态. 多态: 调用方 ...
- lua基于oopclass的属性节点类 和 集合类
--[[---------------------------------------------------------------------------- --@ Descrption: 属性节 ...
- Python3学习笔记21-实例属性和类属性
由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(object): def __init__(se ...
- python基础-类的属性(类属性,实例属性,私有属性)
一:类的属性 类的属性分为:类属性(公有属性),实例属性和私有属性. 1)类属性(公有属性(静态字段): 类定义时直接指定的属性(不是在__init__方法中),可以通过类名直接访问属性,并且保存 ...
- python面向对象编程(2)—— 实例属性,类属性,类方法,静态方法
1 实例属性和类属性 类和实例都是名字空间,类是类属性的名字空间,实例则是实例属性的名字空间. 类属性可通过类或实例来访问.只有通过类名访问时,才能修改类属性的值. 例外的一种情况是,当类属性是一个 ...
- AD属性常量类
参考:http://www.selfadsi.org/user-attributes.htm namespace Common { /// <summary> /// AD中的属性,没有出 ...
随机推荐
- C++基本要点复习--------coursera程序设计实习(PKU)的lecture notes
因为一些特性复杂,很多时候也用不到一些特性,所以忘记了,算是随笔,也当作一个临时查找的手册.没有什么顺序,很杂. 1.构造函数通过函数重载的机制可以有多个(不同的构造函数,参数个数,或者参数类型不同. ...
- ECharts API
From:http://echarts.baidu.com/echarts2/doc/doc.html 简介 名词解析 图表类型 line bar scatter k pie radar chord ...
- DBA 经典面试题(4)
1.如果信息采集管理系统(ICM)崩溃了怎么办? 答案:所有其他的管理器都会继续工作.ICM只会处理队列控制请求,意思是开启和关闭其他并发的管理器. 2.你如何加速打补丁的过程? 答案: ...
- IO模型总结
总结 幽默讲解 linux 的 Socket IO 模型(上)
- 《Java程序员面试笔试宝典》之为什么Java中有些接口没有任何方法
由于Java不支持多重继承,即一个类只能有一个父类,为了克服单继承的缺点,Java语言引入了接口这一概念.接口是抽象方法定义的集合(接口中也可以定义一些常量值),是一种特殊的抽象类.接口中只包含方法的 ...
- 【转】Linux下编译ffmpeg
1.下载ffmpeg.下载网址:http://www.ffmpeg.org/download.html 2.解压缩tar -zxvf ffmpeg-2.0.1.tar.gz 3.配置,生成Makefi ...
- Linux 块设备驱动 (一)
1.块设备的I/O操作特点 字符设备与块设备的区别: 块设备只能以块为单位接受输入和返回输出,而字符设备则以字符为单位. 块设备对于I/O请求有对应的缓冲区,因此它们可以选择以什么顺序进行响应,字符设 ...
- 关于sem_unlink什么时候删除信号量
sem_unlink在man手册里有这么一段话: sem_unlink() removes the named semaphore referred to by name. The semaphore ...
- springmvc-时间类型转换器
springmvc 没有默认实现时间类型的转化,需要如下代码实现此功能. @InitBinder public void initBinder(HttpServletRequest request,S ...
- Lua Interface基础使用
Lua是一种可爱的脚本语言,由Roberto Ierusalimschy.Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发. 其设计目的 ...