【发布时间】:2020-07-27 15:11:18
【问题描述】:
我用 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>"
请注意,这只是一个示例。任何请求可能有不同数量的列表,但它始终是一系列无序列表。
我需要获取 <li> 标签内的文本,以下 PHP 代码运行良好。
$DOM = new DOMDocument;
$DOM->loadHTML($htmlString);
$lis = $DOM->getElementsByTagName('li');
$items =[];
for ($i = 0; $i < $lis->length; $i++) $items[] = $lis[$i]->nodeValue;
然后我在$items 变量中得到了我想要的数组 [Item 1,...,Item 5]。
现在我想在 JavaScript 中做同样的工作。那就是我有一个字符串
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 中,我想获取每个 <li> 标记内的文本。我在网上搜索了一个与 JavaScript 中的 PHP DOMDocument 等效的类,但令人惊讶的是,我什么也没找到。
任何想法如何在类似于 PHP 代码的(最好是 Vanilla)JavaScript 中做到这一点?
如果没有,知道如何在 JavaScript 中执行此操作(甚至可能使用正则表达式)?
【问题讨论】:
-
您是在浏览器中运行 Javascript,还是在服务器上(在 Node 等下)运行 Javascript?
-
jQuery 在这方面做得很好。它使用 css 选择器来查询 dom 中的项目。尽管它的用途相当广泛,但仍有很多批评,所以在采用之前做一些研究。
-
@iainn 我在浏览器中运行。有区别吗?
-
@danielson317 确实如此。问题是,我不想从我自己页面的 DOM 中选择 li。我需要抓取的是 html 字符串中的 li。
-
@MathCoder 你可以从一个 html 字符串创建一个 jquery 对象:
$(string).find('li')
标签: javascript php html regex domdocument