使用这样的 HTML:
<div id="container">
<p>Lorem ipsum lorem ipsum
<p>This is the second!
<span data-attribute="my-span">Hello World</span>
</p>
</p>
</div>
我想找到从容器到我的跨度的文本长度。因此,通过计算后代的指数,我得到了 42 的正确答案。
但如果我有这样的 HTML:
<div id="container">
<p>Lorem ipsum lorem ipsum
<p>This is the second!
<span data-attribute="my-span">Hello World</span>
</p>
Some preceding HTML that I dont want!
</p>
</div>
我不希望字符计数继续我的跨度。我只希望字符数达到我的跨度,所以正确答案仍然是 42。但是通过计算子文本长度,它还会添加到前面的文本和跨度的文本中(这很容易通过减去它来消除从总数)。
我已经探索了列出 html 和子字符串到我想要的 span 属性,拆分结尾并解析 html,只留下我想要计算的文本字符。但这似乎过于复杂。
我也在考虑使用诸如wicked good xpath之类的东西来查找所有节点,直到我正在寻找的节点,然后总结文本。
我还查看了仅列出直到某个点的所有文本节点并将它们求和,但它在我的跨度文本之前列出了孩子的前面文本,因此它的求和顺序不正确。
此外,嵌套可能有 n 层深,所以不要假设只有一层。
关于实现这一目标的最佳方法的任何建议?