HtmlAgilityPack官方文档(四)【Traversing】

Traversing允许您遍历HTML节点。

属性

名称描述
ChildNodesGets all the children of the node.
FirstChildGets the first child of the node.
LastChildGets the last child of the node.
NextSiblingGets the HTML node immediately following this element.
ParentNodeGets the parent of this node (for nodes that can have parents).

方法

名称描述
Ancestors()Gets all the ancestor of the node.
Ancestors(String)Gets ancestors with matching name.
AncestorsAndSelf()Gets all anscestor nodes and the current node.
AncestorsAndSelf(String)Gets all anscestor nodes and the current node with matching name.
DescendantNodesGets all Descendant nodes for this node and each of child nodes
DescendantNodesAndSelfReturns a collection of all descendant nodes of this element, in document order
Descendants()Gets all Descendant nodes in enumerated list
Descendants(String)Get all descendant nodes with matching name
DescendantsAndSelf()Returns a collection of all descendant nodes of this element, in document order
DescendantsAndSelf(String)Gets all descendant nodes including this node
ElementGets first generation child node matching name
ElementsGets matching first generation child nodes matching name

public HtmlNodeCollection ChildNodes { get; }

获取节点的所有子节点。ChildNodesHtmlAgilityPack.HtmlNode 的成员

以下示例显示节点的所有子元素。

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var htmlBody = htmlDoc.DocumentNode.SelectSingleNode("//body");

HtmlNodeCollection childNodes = htmlBody.ChildNodes;

foreach (var node in childNodes)
{
    if (node.NodeType == HtmlNodeType.Element)
    {
        Console.WriteLine(node.OuterHtml);
    }
}   

public HtmlNode FirstChild { get; }

获取节点的第一个子节点。FirstChildHtmlAgilityPack.HtmlNode 的成员

以下示例显示节点的第一个子节点。

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//body");

var htmlBody = htmlDoc.DocumentNode.SelectSingleNode("//body");

HtmlNode firstChild = htmlBody.FirstChild;

Console.WriteLine(firstChild.OuterHtml);    

public HtmlNode LastChild { get; }

获取节点的最后一个子节点。LastChildHtmlAgilityPack.HtmlNode的成员

以下示例显示节点的最后一个子节点。

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//body");

var htmlBody = htmlDoc.DocumentNode.SelectSingleNode("//body");

HtmlNode lastChild = htmlBody.LastChild;

Console.WriteLine(lastChild.OuterHtml); 

public HtmlNode NextSibling { get; }

获取紧跟在此元素后面的HTML节点。 NextSiblingHtmlAgilityPack.HtmlNode 的成员

以下示例显示下一个兄弟节点。

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var node = htmlDoc.DocumentNode.SelectSingleNode("//body/h1");

HtmlNode sibling = node.NextSibling;

while (sibling != null)
{
    if(sibling.NodeType == HtmlNodeType.Element)
        Console.WriteLine(sibling.OuterHtml);

    sibling = sibling.NextSibling;
}

public IEnumerable < HtmlNode > Ancestors()

获取节点的所有祖先。Ancestors方法是HtmlAgilityPack.HtmlNode的成员

返回:

返回此元素的所有祖先节点的集合。

以下示例显示所有祖先的名称。

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var node = htmlDoc.DocumentNode.SelectSingleNode("//b");

foreach (var nNode in node.Ancestors())
{
    if (nNode.NodeType == HtmlNodeType.Element)
    {
        Console.WriteLine(nNode.Name);
    }
}

public IEnumerable<HtmlNode> Ancestors(string name)

获取具有匹配名称的祖先。 Ancestors方法是HtmlAgilityPack.HtmlNode 的成员

参数:

name: 祖先节点的名称。

返回:

返回具有匹配名称的此元素的所有祖先节点的集合。

以下示例显示具有匹配名称的祖先的名称。

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var node = htmlDoc.DocumentNode.SelectSingleNode("//b");

foreach (var nNode in node.Ancestors("body"))
{
    if (nNode.NodeType == HtmlNodeType.Element)
    {
        Console.WriteLine("Node name: " + nNode.Name);
        Console.WriteLine(nNode.InnerText);
    } 
}

public IEnumerable<HtmlNode> AncestorsAndSelf()

获取节点的所有祖先和节点本身。 AncestorsAndSelf方法是HtmlAgilityPack.HtmlNode 的成员

返回:

还返回所有祖先节点和节点本身的集合。

例子

以下示例显示所选节点及其所有祖先的名称。

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var node = htmlDoc.DocumentNode.SelectSingleNode("//u");

 foreach (var nNode in node.AncestorsAndSelf())
 {
     if (nNode.NodeType == HtmlNodeType.Element)
     {
         Console.WriteLine(nNode.Name);
     }
 }      

public IEnumerable<HtmlNode> AncestorsAndSelf(string name)

获取具有匹配名称的祖先和节点本身。AncestorsAndSelf方法是HtmlAgilityPack.HtmlNode的成员

参数:

name: 祖先节点的名称。

返回:

返回所有祖先节点和节点本身的名称匹配的集合。

以下示例显示所选节点及其所有具有匹配名称的祖先的名称

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var node = htmlDoc.DocumentNode.SelectSingleNode("//u");

foreach (var nNode in node.AncestorsAndSelf("p"))
{
    if (nNode.NodeType == HtmlNodeType.Element)
    {
        Console.WriteLine(nNode.Name);
    }
}

public IEnumerable<HtmlNode> DescendantNodes([int level = 0])

获取此节点和每个子节点的所有后代节点。DescendantNodes方法是HtmlAgilityPack.HtmlNode的成员

参数:

level:要在html树中解析的节点的深度级别。

返回:

返回此元素的所有后代节点的集合。

例子

以下示例显示所有后代节点的名称。

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var node = htmlDoc.DocumentNode.SelectSingleNode("//body");

foreach (var nNode in node.DescendantNodes())
{
    if (nNode.NodeType == HtmlNodeType.Element)
    {
        Console.WriteLine(nNode.Name);
    }
}

public IEnumerable<HtmlNode> DescendantNodesAndSelf([int level = 0])

以文档顺序获取此元素的所有后代节点的集合。 DescendantNodesAndSelf方法是HtmlAgilityPack.HtmlNode的成员

返回:

以文档顺序返回此元素的所有后代节点的集合。

以下示例显示所有后代节点的名称和节点本身。

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var node = htmlDoc.DocumentNode.SelectSingleNode("//body");

foreach (var nNode in node.DescendantNodesAndSelf())
{
    if (nNode.NodeType == HtmlNodeType.Element)
    {
        Console.WriteLine(nNode.Name);
    }
}

public IEnumerable<HtmlNode> Descendants([int level = 0])

获取枚举列表中的所有后代节点。Descendants* HtmlAgilityPack.HtmlNode *的成员

参数:

level: 要在html树中解析的节点的深度级别。

返回:

返回此元素的所有后代节点的集合。

以下示例显示所有后代节点的名称。

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var node = htmlDoc.DocumentNode.SelectSingleNode("//body");

foreach (var nNode in node.Descendants())
{
    if (nNode.NodeType == HtmlNodeType.Element)
    {
        Console.WriteLine(nNode.Name);
    }
}

public IEnumerable<HtmlNode> Descendants(string name)

获取所有具有匹配名称的后代节点。DescendantsHtmlAgilityPack.HtmlNode的成员

参数:

name: 后代节点的名称。

返回:

返回名称匹配的所有后代节点的集合。

以下示例显示所有具有匹配名称的后代节点的名称。

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var node = htmlDoc.DocumentNode.SelectSingleNode("//body");

foreach (var nNode in node.Descendants("h2"))
{
    if (nNode.NodeType == HtmlNodeType.Element)
    {
        Console.WriteLine(nNode.Name);
    }
}

public IEnumerable<HtmlNode> DescendantsAndSelf()

以文档顺序获取此元素的所有后代节点的集合。 DescendantsAndSelf方法是HtmlAgilityPack.HtmlNode的成员

返回:

以文档顺序返回此元素的所有后代节点的集合。

以下示例显示所有后代的名称和节点本身。

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var node = htmlDoc.DocumentNode.SelectSingleNode("//body");

foreach (var nNode in node.DescendantsAndSelf())
{
    if (nNode.NodeType == HtmlNodeType.Element)
    {
        Console.WriteLine(nNode.Name);
    }
}

public IEnumerable < HtmlNode > DescendantsAndSelf(string name)

获取所有具有匹配名称的后代节点和节点本身。 DescendantsAndSelfHtmlAgilityPack.HtmlNode 的成员

参数:

name: 后代节点的名称。

返回:

返回具有匹配名称的所有后代和节点本身的集合。

以下示例显示所有具有匹配名称的后代节点的名称以及节点本身。

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var node = htmlDoc.DocumentNode.SelectSingleNode("//body");

foreach (var nNode in node.DescendantsAndSelf("h2"))
{
    if (nNode.NodeType == HtmlNodeType.Element)
    {
        Console.WriteLine(nNode.OuterHtml);
    }
}

public HtmlNode Element(string name)

获取具有匹配名称的第一代子节点。 Element方法是HtmlAgilityPack.HtmlNode的成员

参数:

name: 子节点的名称。

返回:

返回具有匹配名称的第一代子节点。

以下示例显示具有匹配名称的第一代子节点。

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var htmlBody = htmlDoc.DocumentNode.SelectSingleNode("//body");

var node = htmlBody.Element("p");

Console.WriteLine(node.OuterHtml);

public IEnumerable < HtmlNode > Elements(string name)

获取具有匹配名称的第一代子节点。Elements方法是HtmlAgilityPack.HtmlNode 的成员

参数:

name: 子节点的名称。

返回:

返回具有匹配名称的第一代子节点的集合。

以下示例显示具有匹配名称的第一代子节点。

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);

var htmlBody = htmlDoc.DocumentNode.SelectSingleNode("//body");

var nodes = htmlBody.Elements("h2");

foreach (var node in nodes)
{
    if (node.NodeType == HtmlNodeType.Element)
    {
        Console.WriteLine(node.OuterHtml);
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值