php DOMDocument对象的JavaScript等价物

php DOMDocument对象的JavaScript等价物,javascript,php,html,regex,domdocument,Javascript,Php,Html,Regex,Domdocument,我用PHP编写了一段代码,用于解析通过“wikipedia.org”的API请求收到的数据。 我使用DOMDocument类来解析数据,它工作得非常好。现在我想用JavaScript做同样的工作。API请求返回(经过一点清理后)如下字符串: $htmlString = "<ul> <li>Item 1</li> <li>Item 2</li> </ul> <ul> <li>It

我用PHP编写了一段代码,用于解析通过“wikipedia.org”的API请求收到的数据。 我使用DOMDocument类来解析数据,它工作得非常好。现在我想用JavaScript做同样的工作。API请求返回(经过一点清理后)如下字符串:

$htmlString = "<ul>
    <li>Item 1</li>
    <li>Item 2</li>
</ul>
<ul>
    <li>Item 3</li>
    <li>Item 4</li>
    <li>Item 5</li>
</ul>"
在JavaScript中,我希望获得每个
  • 标记中的文本。我在web上搜索JavaScript中与PHP DOMDocument等效的类,但令人惊讶的是,我什么也没找到。 如何在类似于PHP代码的JavaScript(最好是普通的)中实现这一点?
    如果没有,您知道如何在JavaScript中实现这一点吗(甚至可以使用正则表达式)?

    如果您严格使用字符串,您希望使用正则表达式

    FYI 我使用的是ES20xx语法。如果无法支持此功能,则需要转换为用户可以访问的语法

    在这里,我有一个表达式,它捕获了打开
  • 和结束标记之间的任何内容。然后我使用换行符将字符串拆分为一个数组。我们需要从结果数组中过滤出空元素,并最终在最终数组中返回所需的项

    var htmlString=`
    • 项目1
    • 项目2
    • 项目3
    • 项目4
    • 项目5
    `; var lis=htmlString.replace(/
    • (.*)/g,$1')。split('\n'); var项目=lis .filter(项目=>{ 如果(项和项!==null和项!==“”){ 退货项目; } }) .map(项目=>{ var元素=item.replace(/\s{2,}/g',); 返回元素; }); log('items数组',items)使用

      您的移植代码与PHP非常相似:

      let parser=new DOMParser()
      让doc=parser.parseFromString(`
      • 项目1
      • 项目2
      • 项目3
      • 项目4
      • 项目5
      • “文本/html”) 让lis=doc.getElementsByTagName('li') 让项目=[] 用于(设i=0;ilog(items)
      您是在浏览器中运行Javascript,还是在服务器(节点下等)上运行Javascript?jQuery做得相当好。它使用css选择器查询dom中的项。尽管它的应用相当广泛,但仍有很多人对它提出批评,所以在采用它之前要做一些研究。@iainn我正在浏览器中运行。这有区别吗?@danielson317这是真的。问题是,我不想从我自己页面的DOM中选择li。我需要抓取的是html字符串中的li。@MathCoder您可以从html字符串创建一个jquery对象:
      $(字符串)。查找('li')
      ,谢谢您的回答。我希望能找到一个与我的php代码或多或少相似的答案。可以在其他情况下使用的更系统的东西。但是你的答案在这里非常有效。谢谢请用一个例子更新您的问题,使我能够更好地解决您的问题。我只能按照你告诉我们的去做。
      $DOM = new DOMDocument;
      $DOM->loadHTML($htmlString);
      $lis = $DOM->getElementsByTagName('li');
      $items =[];
      for ($i = 0; $i < $lis->length; $i++) $items[] = $lis[$i]->nodeValue;
      
      htmlString = "<ul>
          <li>Item 1</li>
          <li>Item 2</li>
      </ul>
      <ul>
          <li>Item 3</li>
          <li>Item 4</li>
          <li>Item 5</li>
      </ul>"