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属性处理类的更多相关文章

  1. 【Python】[面性对象编程] 获取对象信息,实例属性和类属性

    获取对象信息1.使用isinstance()判断class类型2.dir() 返回一个对象的所有属性和方法3.如果试图获取不存在的对象会抛出异常[AttributeError]4.正确利用对象内置函数 ...

  2. python基础——实例属性和类属性

    python基础——实例属性和类属性 由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(objec ...

  3. 自己通过反射写的一个属性copy类

    package com.xxx.beancopier; import java.lang.annotation.Documented; import java.lang.annotation.Elem ...

  4. Python面向对象 -- 继承和多态、获取对象信息、实例属性和类属性

    继承和多态 继承的好处: 1,子类可以使用父类的全部功能 2,多态:当子类和父类都存在相同的方法时,子类的方法会覆盖父类的方法,即调用时会调用子类的方法.这就是继承的另一个好处:多态. 多态: 调用方 ...

  5. lua基于oopclass的属性节点类 和 集合类

    --[[---------------------------------------------------------------------------- --@ Descrption: 属性节 ...

  6. Python3学习笔记21-实例属性和类属性

    由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(object): def __init__(se ...

  7. python基础-类的属性(类属性,实例属性,私有属性)

      一:类的属性 类的属性分为:类属性(公有属性),实例属性和私有属性. 1)类属性(公有属性(静态字段): 类定义时直接指定的属性(不是在__init__方法中),可以通过类名直接访问属性,并且保存 ...

  8. python面向对象编程(2)—— 实例属性,类属性,类方法,静态方法

    1  实例属性和类属性 类和实例都是名字空间,类是类属性的名字空间,实例则是实例属性的名字空间. 类属性可通过类或实例来访问.只有通过类名访问时,才能修改类属性的值. 例外的一种情况是,当类属性是一个 ...

  9. AD属性常量类

    参考:http://www.selfadsi.org/user-attributes.htm namespace Common { /// <summary> /// AD中的属性,没有出 ...

随机推荐

  1. C++基本要点复习--------coursera程序设计实习(PKU)的lecture notes

    因为一些特性复杂,很多时候也用不到一些特性,所以忘记了,算是随笔,也当作一个临时查找的手册.没有什么顺序,很杂. 1.构造函数通过函数重载的机制可以有多个(不同的构造函数,参数个数,或者参数类型不同. ...

  2. ECharts API

    From:http://echarts.baidu.com/echarts2/doc/doc.html 简介 名词解析 图表类型 line bar scatter k pie radar chord ...

  3. DBA 经典面试题(4)

    1.如果信息采集管理系统(ICM)崩溃了怎么办?  答案:所有其他的管理器都会继续工作.ICM只会处理队列控制请求,意思是开启和关闭其他并发的管理器.    2.你如何加速打补丁的过程?    答案: ...

  4. IO模型总结

    总结 幽默讲解 linux 的 Socket IO 模型(上)

  5. 《Java程序员面试笔试宝典》之为什么Java中有些接口没有任何方法

    由于Java不支持多重继承,即一个类只能有一个父类,为了克服单继承的缺点,Java语言引入了接口这一概念.接口是抽象方法定义的集合(接口中也可以定义一些常量值),是一种特殊的抽象类.接口中只包含方法的 ...

  6. 【转】Linux下编译ffmpeg

    1.下载ffmpeg.下载网址:http://www.ffmpeg.org/download.html 2.解压缩tar -zxvf ffmpeg-2.0.1.tar.gz 3.配置,生成Makefi ...

  7. Linux 块设备驱动 (一)

    1.块设备的I/O操作特点 字符设备与块设备的区别: 块设备只能以块为单位接受输入和返回输出,而字符设备则以字符为单位. 块设备对于I/O请求有对应的缓冲区,因此它们可以选择以什么顺序进行响应,字符设 ...

  8. 关于sem_unlink什么时候删除信号量

    sem_unlink在man手册里有这么一段话: sem_unlink() removes the named semaphore referred to by name. The semaphore ...

  9. springmvc-时间类型转换器

    springmvc 没有默认实现时间类型的转化,需要如下代码实现此功能. @InitBinder public void initBinder(HttpServletRequest request,S ...

  10. Lua Interface基础使用

    Lua是一种可爱的脚本语言,由Roberto Ierusalimschy.Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发. 其设计目的 ...