繁体   English   中英

C#什么是htmlnode中的#text节点?

[英]C# What is #text node in htmlnode?

我试图遍历每个html节点并获取其属性和innerText。 目前,当我扫描任何html时,我都会得到这个愚蠢的#text节点,即使它不存在。

这是我的html

<div class="demographic-info adr editable-item" id="demographics">
  <div id="location-container" data-li-template="location">
    <div id="location" class="editable-item">
      <dl>
        <dt>Location</dt>
        <dd>
          <span class="locality">Bolton, United Kingdom</span>
        </dd>
        <dt>Industry</dt>
        <dd class="industry">Computer Games</dd>
      </dl>
    </div>
  </div>
</div>

这是我的C#

foreach (HtmlNode node in j.ChildNodes)
    if (node.HasChildNodes)
        checkNode(node);

static void checkNode(HtmlNode node)
{
    foreach (HtmlNode n in node.ChildNodes)
    {
        if (n.HasChildNodes)
            checkNode(n);
        else
        {
            HtmlNode nodeValue = hasValueInNode(n);
            if (nodeValue != null)
                addCategories(nodeValue);
        }   
    }
}

当我通过调试模式检查编译器位于哪个节点时,我得到了:

1 = div,2 =#text,3 = div,4 =#text,5 = div,6 =#text,7 = dl ...依此类推!

我猜想这是将空白或返回空间检测为节点,但这是循环的浪费。 有人可以向我解释一下,以及避免它的方法。 谢谢

这就是HTML / XML的工作方式。 每当节点内有一些文本时,都会有一个文本节点。 在这种情况下,它碰巧是空白,但仍然是文本,不能将其丢弃。 该节点不是“愚蠢”的,它确实存在。

您的代码可以自由检查文本节点是否为空格,如果需要可以忽略它,也可以将XML制作为没有任何空格。

就像一个想法:您如何告诉解析器哪个空格应该很重要:

<div>
  <div>Test<span>
  </span>test</div>
</div>

因此,解析器应该只是“有Test,然后有一个空的span元素然后进行测试,所以实际上里面的文本是'Testtest'”? 还是怎么知道该怎么办?

暂无
暂无

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

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