Traversing允许您遍历HTML节点。
属性
| 名称 | 描述 |
|---|---|
| ChildNodes | Gets all the children of the node. |
| FirstChild | Gets the first child of the node. |
| LastChild | Gets the last child of the node. |
| NextSibling | Gets the HTML node immediately following this element. |
| ParentNode | Gets 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. |
| DescendantNodes | Gets all Descendant nodes for this node and each of child nodes |
| DescendantNodesAndSelf | Returns 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 |
| Element | Gets first generation child node matching name |
| Elements | Gets matching first generation child nodes matching name |
public HtmlNodeCollection ChildNodes { get; }
获取节点的所有子节点。ChildNodes是HtmlAgilityPack.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; }
获取节点的第一个子节点。FirstChild是HtmlAgilityPack.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; }
获取节点的最后一个子节点。LastChild是HtmlAgilityPack.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节点。 NextSibling是HtmlAgilityPack.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)
获取所有具有匹配名称的后代节点。Descendants是HtmlAgilityPack.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)
获取所有具有匹配名称的后代节点和节点本身。 DescendantsAndSelf是HtmlAgilityPack.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);
}
}
本文介绍如何使用HtmlAgilityPack库中的HtmlNode类遍历HTML文档的节点,包括获取子节点、兄弟节点、祖先节点及后代节点的方法。
1247

被折叠的 条评论
为什么被折叠?



