使用cheerio
解析XML,请考虑
<foo>this<bar>that</bar></foo>
我想$('foo').text()
时只得到“ this”,但是我却得到“ thisthat”。如何将响应仅限于元素 foo 中的立即文本?
答案 0 :(得分:1)
对于问题中的示例,您可以获取foo的第一个孩子的文本:
$("foo")[0].children[0].data; //'this'
相反,如果您希望所有立即文本位于foo
内,则可以遍历其children
并对其type
进行操作。片段:
function getImmediateText(str){
let retStr = "";
var $ = cheerio.load(str);
var children = $("foo")[0].children;
children.forEach(function(child){
//if type is text, add to return string
if(child.type == "text")
retStr += child.data;
})
return retStr;
}
如果您的文字是<foo>this<bar>that</bar>after</foo>
,则将返回thisafter
。您可以根据需要轻松更改它,以在“ this”和“ after”之间放置空格或换行符。