使用cheerio从XML元素获取立即文本

时间:2019-02-08 14:29:47

标签: node.js cheerio

使用cheerio解析XML,请考虑

<foo>this<bar>that</bar></foo>

我想$('foo').text()时只得到“ this”,但是我却得到“ thisthat”。如何将响应仅限于元素 foo 中的立即文本?

1 个答案:

答案 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”之间放置空格或换行符。