如何忽略 cheerio 从转属性到小写?
How ignore cheerio from turn attributes to lowercase?
如何告诉 cheerio 不要将属性更改为小写?
目前,cheerio
将 fooBar
变为 foobar
。如何不这样做?
const cheerio = require("cheerio");
const html = `
<div>
<h4></h4>
<img src="">
<input>
<p fooBar></p>
</div>
`;
const $ = cheerio.load(html);
const output = $.html();
console.log({ output });
我尝试根据 answer in github 添加 lowerCaseAttributeNames
但这无济于事:
const $ = cheerio.load(html, { lowerCaseAttributeNames: false });
结果:
<html><head></head><body><div>
<h4></h4>
<img src>
<input>
<p foobar></p> <------------------foobar. expected: fooBar
</div>
</body></html>
我尝试使用 xmlMode
,但它会产生关闭问题:
<div>
<h4/>
<img src="">
<input>
<p fooBar=""/>
</input></img></div>
UPADTE
我在 Github 中搜索了 lowerCaseAttributeNames
,但它 only exist in the types,不确定它对代码有影响 :(
Cheerio 默认使用 parser5,lowerCaseAttributeName
是 htmlparser2 属性。
您可以尝试按照 github 页面中的指示在开头加载 htmlparser2:
// Usage as of htmlparser2 version 3:
const htmlparser2 = require('htmlparser2');
const dom = htmlparser2.parseDOM(document, options);
const $ = cheerio.load(dom);
在我深入研究 cheerio
源代码和许多其他库之后,我了解到您可以使用 cheerio
来获得您想要的东西。
首先,您应该通过xmlMode:true
加载内容,并在调用html()
时使用xmlMode:false
:
const $ = cheerio.load(html, { xmlMode: true });
const output = $.html({ xmlMode: false });
完整代码也在codesandbox.io
const cheerio = require("cheerio");
console.clear();
const html = `
<div>
<h4></h4>
<img src="">
<input>
<p fooBar></p>
</div>
`;
const $ = cheerio.load(html, { xmlMode: true, lowerCaseAttributeNames: false });
const output = $.html({ xmlMode: false });
console.log({ output });
/*
<div>
<h4></h4>
<img src>
<input>
<p fooBar></p>
</div>
*/
如何告诉 cheerio 不要将属性更改为小写?
目前,cheerio
将 fooBar
变为 foobar
。如何不这样做?
const cheerio = require("cheerio");
const html = `
<div>
<h4></h4>
<img src="">
<input>
<p fooBar></p>
</div>
`;
const $ = cheerio.load(html);
const output = $.html();
console.log({ output });
我尝试根据 answer in github 添加 lowerCaseAttributeNames
但这无济于事:
const $ = cheerio.load(html, { lowerCaseAttributeNames: false });
结果:
<html><head></head><body><div>
<h4></h4>
<img src>
<input>
<p foobar></p> <------------------foobar. expected: fooBar
</div>
</body></html>
我尝试使用 xmlMode
,但它会产生关闭问题:
<div>
<h4/>
<img src="">
<input>
<p fooBar=""/>
</input></img></div>
UPADTE
我在 Github 中搜索了 lowerCaseAttributeNames
,但它 only exist in the types,不确定它对代码有影响 :(
Cheerio 默认使用 parser5,lowerCaseAttributeName
是 htmlparser2 属性。
您可以尝试按照 github 页面中的指示在开头加载 htmlparser2:
// Usage as of htmlparser2 version 3:
const htmlparser2 = require('htmlparser2');
const dom = htmlparser2.parseDOM(document, options);
const $ = cheerio.load(dom);
在我深入研究 cheerio
源代码和许多其他库之后,我了解到您可以使用 cheerio
来获得您想要的东西。
首先,您应该通过xmlMode:true
加载内容,并在调用html()
时使用xmlMode:false
:
const $ = cheerio.load(html, { xmlMode: true });
const output = $.html({ xmlMode: false });
完整代码也在codesandbox.io
const cheerio = require("cheerio");
console.clear();
const html = `
<div>
<h4></h4>
<img src="">
<input>
<p fooBar></p>
</div>
`;
const $ = cheerio.load(html, { xmlMode: true, lowerCaseAttributeNames: false });
const output = $.html({ xmlMode: false });
console.log({ output });
/*
<div>
<h4></h4>
<img src>
<input>
<p fooBar></p>
</div>
*/