繁体   English   中英

获取html节点内部文本分段?

[英]get html node inner text segmented?

我正在尝试解析html页面,我正面临一个问题,即我希望得到节点的内部文本分段,即在html节点上迭代,将每个文本段假设为子节点:

<node1>
This text I WANT on iterate#1
<innernode>This text I WANT on iterate#2</innernode>
This text I WANT on iterate#3
<innernode>This text I WANT on iterate#4</innernode>
This text I WANT on iterate#5
</node1>  

我使用htmlagilitypack作为解析器,但我认为我将面临任何其他html解析器的这个问题

要获得目标,请使用带有XPath的SelectNodes。

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(content);//content is the variable containing your html.
var items = doc.DocumentNode.SelectNodes("/node1//text()");
foreach (var item in items)
{
    Console.WriteLine(item.OuterHtml.Replace("\r\n",""));
}

根据您的.NET版本,您可以使用适用于所需节点的扩展方法。 我没有使用html敏捷包,所以这是C#和伪代码的混合。

例如

public static List<string> GetTextSegments(this HtmlNode node)
{
    string nodesText = ... // get the nodes text
    yield nodesText;

    List<HtmlNode> innerNodes = ... // get the list of inner nodes with a 
    // query like node.SelectNodes("//innerNodes")
    foreach(HtmlNode iNode in innerNodes)
    {
        string iNodeText = ... // get iNodes text
        yield iNodeText;
    }
}

你可以这样调用它:

HtmlNode nodeOfTypeNode1 = ... // 
foreach(string text : nodeOfTypeNode1.getTextSegments())
{
    Console.WriteLine(text);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM