循环访问已转换为列表的 HtmlNode
本文关键字:列表 HtmlNode 转换 访问 循环 | 更新日期: 2023-09-27 18:21:59
经过一番搜索,我找到了在迭代HtmlNodes
(Html Agility Pack(时修改它们的解决方案。在此示例中,将添加一个标记作为父标记到每个标记。我正在使用以下代码 (c#(:
foreach(HtmlNode currentNode in descendants.ToList())
{
if (workingnode.name == "strong"){
HtmlNode theParent = workingNode.ParentNode;
HtmlNode newElement = workingDocument.CreateElement("a");
newElement.SetAttributeValue("href", "Glossary.xhtml#gloss");
newElement.AppendChild(workingNode);
theParent.ReplaceChild(newElement, workingNode);
}
}
在迭代后代之前对后代使用 ToList()
方法有哪些缺点?我只是担心,如果它很容易做到,这将是HtmlNode
大多数修改问题的第一个建议。
ToList
方法将循环访问集合并将每个项添加到泛型List
。如果你的descendants
变量是 IEnumerable<T>
或其他集合类型,那么调用它ToList
是没有意义的,因为 foreach
循环可以接受IEnumerable<T>
输入作为标准。因此,如果这是真的,那么以下行将更有效,因为它不必循环访问集合来创建另一个集合:
for (int i = descendants.Count() - 1; i >= 0; i--)
{
// Modify the document by adding a parent or removing this node.
}