如何获取HTML中所有文本节点?

比如以下body中

<body>
  <div class="container">
    asdf
    <div>
      Lorem ipsum dolor sit
      <p>!!!!</p>
      nesciunt ipsa cumque!
    </div>
    <p>test3</p>
  </div>
</body>

想获取一个数组

['asdf', 'Lorem ipsum dolor sit', '!!!!', 'nesciunt ipsa cumque!', 'test3']
阅读 7.8k
4 个回答
const res = document.querySelector('*').innerText.split('\n');
console.log(res);

res就是得到的结果了

难道没人提到xpath语法?我觉得也相当简单啊(我用xmllint在终端演示的):

$ echo '<body>
  <div class="container">
    asdf
    <div>
      Lorem ipsum dolor sit
      <p>!!!!</p>
      nesciunt ipsa cumque!
    </div>
    <p>test3</p>
  </div>
</body>' | xmllint --html --xpath '//text()' -

# 输出结果(未trim)

  

    asdf
    

      Lorem ipsum dolor sit
      
!!!!

      nesciunt ipsa cumque!
    

    
test3

如果是获取单纯文本:document.body.innerText

如果是获取节点,那得用babel转语法树

推荐问题
宣传栏