php DOMDocument对象的JavaScript等价物
我用PHP编写了一段代码,用于解析通过“wikipedia.org”的API请求收到的数据。 我使用DOMDocument类来解析数据,它工作得非常好。现在我想用JavaScript做同样的工作。API请求返回(经过一点清理后)如下字符串: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
$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;i log(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>"