如何使用 Cheerio 提取大写属性

Suw*_*wen 9 javascript attributes node.js cheerio

我有一个日志条目如下:

<Event Timestamp="2017-06-14T10:17:09.313991+10:00" Level="INFO" Identity=""><Message>Accessed Page: </Message></Event>
Run Code Online (Sandbox Code Playgroud)

我想用 Cheerio 提取时间戳、级别等属性。我所做的是这样的:

const $ = cheerio.load(line)
console.log($("Event").attr('Timestamp'))
Run Code Online (Sandbox Code Playgroud)

但是,我只是在控制台中未定义。您能指点一下问题出在哪里吗?

ggo*_*len 3

.attr()是正确的 Cheerio 方法调用,但此 XML 正在默认 HTML 模式下解析。console.log($.html());在 HTML 模式下,Cheerio 会小写属性,您可以在加载后看到这些属性。

{xml: true}假设您正在处理 XML,添加保留大小写:

const cheerio = require("cheerio"); // 1.0.0-rc.12

const xml = `
<Event Timestamp="2017-06-14T10:17:09.313991+10:00" Level="INFO" Identity=""><Message>Accessed Page: </Message></Event>
`;

const $ = cheerio.load(xml, {xml: true});
console.log($("Event").attr("Timestamp")); // => 2017-06-14T10:17:09.313991+10:00
Run Code Online (Sandbox Code Playgroud)

如果这实际上是 HTML,那么您可以使用小写属性名称提取该字段:

const $ = cheerio.load(html);
console.log($("Event").attr("timestamp")); // => 2017-06-14T10:17:09.313991+10:00
Run Code Online (Sandbox Code Playgroud)