gpt4 book ai didi

javascript - nodejs 使用 cheerio 解析 xml 返回空 CDATA

转载 作者:数据小太阳 更新时间:2023-10-29 02:22:13 27 4
gpt4 key购买 nike

我在 nodejs 中使用 cheerio 来解析一些 rss 提要。我正在抓取所有将它们放入数组中的项目。我正在使用 3 个测试提要,它们的每个“项目”元素都有一个“描述”子元素。在其中一个提要中,整个“描述”被包装为 CDATA,我无法获得它的值(value)。这是一个简短的代码片段

//Open the xml document with cheerio
$ = cheerio.load(arrXmlDocs[i],{ ignoreWhitespace : true, xmlMode : true});

//Loop through every item
$('item').each(function(i, xmlItem){

//array to hold each item being converted into an array
var tempArray = [];

//Loop through each child of <item>
$(xmlItem).children().each(function(i, xmlItem){
//Get the name
tempArray[$(this)[0].name] = $(this).text();
}

}

正如预期的那样,两个没有 CDATA 的 rss 提要给我一个这样的数组

[
[
name: 'name of episode',
description:'description of episode',
pubdate: 'published date'
],
[
name: 'name of episode',
description:'description of episode',
pubdate: 'published date'
]
]

带有 CDATA 描述的提要如下所示

    [
name: 'name of episode',
pubdate: 'published date'
],

所以我的问题是:为什么 cheerio 不返回包装在 CDATA 中的值/我怎样才能让它返回这些值。

最佳答案

这是 a known issue ( related ) 与 cheerio。在您的情况下,还无法使用 CDATA 从 XML 创建正确的树。我知道这是一个令人失望的答案,它是 WIP。

它正在处理中,同时,您可以使用正则表达式删除 CDATA

arrXmlDocs[i].replace(/<!\[CDATA\[([\s\S]*?)\]\]>(?=\s*<)/gi, "$1");

这是示例的链接 jsfiddle .

虽然这不是一个理想的解决方案,但在他们解决这个问题之前它应该足够了。

关于javascript - nodejs 使用 cheerio 解析 xml 返回空 CDATA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15472213/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com