javascript - Cheeriojs 遍历 xml 响应
问题描述
假设我有一个来自如下请求的 xml 响应:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/xsl/someExcelSheet.xsl"?>
<events>
<event onair="true">
<type>Live</type>
<title>Nyhederne - 1/1</title>
<airtime>09:30:02.13</airtime>
<id>58529</id>
</event>
<event onair="false">
<type>PrimaryVideo</type>
<title>MTV1</title>
<airtime>09:35:02.13</airtime>
<id>58532</id>
</event>
...
我如何使用cheeriojs
它从中提取数据?
正在做
request(url, (error, response, xml) => {
if (!error && response.statusCode == 200) {
const $ = cheerio.load(xml, {
xmlMode: true,
decodeEntities: true,
withStartIndices: false,
withEndIndices: false,
})
并尝试
> $('events')
LoadedCheerio(1) [Element, options: {…}, _root: LoadedCheerio(1), prevObject: LoadedCheerio(1)]
> $('event')
LoadedCheerio(468) [Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, Element, …]
但无法弄清楚如何使用它。想要获取所有内容event
并对其events
进行迭代并阅读<type>
,<title>
等标签中的文本。
我最终做的是
const rows: string[][] = $('event')
.text()
.split(/\n/)
.map((str) => str.trim())
.join('\n')
.split(/\n{2,}/g)
.reduce((acc, str) => [...acc, str.split(/\n/)], [])
但是必须有更好的方法,我希望有人愿意向我解释一下?
解决方案
这样的事情应该让你开始:
$('event').get().map(event => {
return {
type: $(event).find('type').text(),
title: $(event).find('title').text(),
// more props
}
})
推荐阅读
- f# - Fsharpc 无法生成 fsi 文件
- mongodb - MongoDB 在 WSL 上因“fdatasync:无效参数”而失败
- python - 从 Flask 应用程序获取当前用户并在 Dash 应用程序中使用
- html - 如何使用显示:用css中的按钮正确阻止?
- python - 当每个键不同时,如何按值对字典列表进行排序?
- python-3.x - 在 Python 中使用 AND 参数在文件中搜索不同的单词
- c# - 是否有类似 entryId 来唯一标识 Outlook vsto 中的 MailItem?
- javascript - 如何将指南针顶部的箭头指向特定方向。例如沙特阿拉伯的当前位置
- java - 随机产生的数字
- html - 为什么我的 DIV 不响应行和列断点?