我用 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 中执行此操作(甚至可能使用正则表达式)?
最佳答案
使用DOMParser()
您移植的代码,与您的 PHP 非常相似:
let parser = new DOMParser()
let doc = parser.parseFromString(`<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
<ul>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</ul>`, "text/html")
let lis = doc.getElementsByTagName('li')
let items = []
for (let i = 0; i < lis.length; i++) items.push(lis[i].textContent)
console.log(items)
关于JavaScript 等价于 php DOMDocument 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61215347/