C# 是否对html节点内部文本进行分段?

C# 是否对html节点内部文本进行分段?,c#,.net,xml,html-parsing,C#,.net,Xml,Html Parsing,我正在尝试解析html页面,但我面临一个问题,即我希望将节点的内部文本分段,即在html节点子节点上迭代,假设每个文本段都是in子节点: <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 itera

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

<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>  

我想要的这个文本是迭代#1
我想在迭代#2中使用此文本
这篇文章我想在迭代#3
我想把这篇文章放在迭代#4上
我想要的这篇文章是迭代5

我正在使用作为解析器,但我认为我将在任何其他html解析器中面临这个问题。要实现您的目标,请将SelectNodes与XPath结合使用

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#和psuedo代码的混合

乙二醇


为什么不使用标准的.net xml类呢?但是当我使用这种方式时,我无法处理html节点,我的意思是我无法获取节点的名称、属性或子节点。您要做的是获取所有文本,而不管内部文本和节点如何。如果是,那么
DocumentNode.SelectNodes(“//text()”)
怎么样?
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);
}