Node.js 节点js和IO xml

Node.js 节点js和IO xml,node.js,cheerio,Node.js,Cheerio,我有以下代码,可以很好地获得: <troveUrl>http://trove.nla.gov.au/work/23043869</troveUrl> 感谢您的帮助。您应该在options对象中传递xmlMode:true,然后您可以将其解析为XML 然后,您可以使用$('tag').attr('attribute')和$('tag').text()获取标记之间的数据 var request = require('request'), cheerio = req

我有以下代码,可以很好地获得:

<troveUrl>http://trove.nla.gov.au/work/23043869</troveUrl> 

感谢您的帮助。

您应该在options对象中传递
xmlMode:true
,然后您可以将其解析为XML

然后,您可以使用
$('tag').attr('attribute')
$('tag').text()
获取标记之间的数据

var request = require('request'),
    cheerio = require('cheerio');
request('http://api.trove.nla.gov.au/result?key=6k6oagt6ott4ohno&zone=book&q-year1-date=2000&l-advformat=Thesis&l-australian=y&q-term2=&q-term3=&q-term0=&q-field1=title%3A&q-type2=all&q-field0=&q-term1=&q-type3=all&q-field3=subject%3A&q-type0=all&q-field2=creator%3A&q-type1=all&l-availability=y%2Ff&q=+date%3A[2000+TO+2014]&q-year2-date=2014&n=1', function(error, response, html) {
    if (!error && response.statusCode == 200) {
        var $ = cheerio.load(html, {
          xmlMode: true
        });
        console.log($('work').attr('id'))
    }
});

真正的问题在于用于获取“id”之后的值的语法。以下代码将不用于控制台。请注销id

var id = $(this);
console.log(id.text());
正确的语法应该是
$('your element')。attr('id')
like在Ben Fortune的回答中提到过。但是,在options对象中传递
xmlMode:true
不是必需的。
如果使用正确的语法,则在选项中传递
xmlMode:false
,也会起作用

console.log(element.attr('id'))工作?谢谢!完美答案-我学到了一些我在谷歌上找不到的东西。@user1222447下次你可以通过搜索源代码中的预期注释或预期术语(而不是谷歌提供的全文问题)来跟踪它。e、 g.在cheerio代码库中搜索术语
xml
,表明存在影响行为的
xmlMode
变量。单靠它是不够的,但我想这是Ben这次或某个时候使用的。如果您将
xmlMode:true
传递给代码,代码应该仍然可以工作。
var request = require('request'),
    cheerio = require('cheerio');
request('http://api.trove.nla.gov.au/result?key=6k6oagt6ott4ohno&zone=book&q-year1-date=2000&l-advformat=Thesis&l-australian=y&q-term2=&q-term3=&q-term0=&q-field1=title%3A&q-type2=all&q-field0=&q-term1=&q-type3=all&q-field3=subject%3A&q-type0=all&q-field2=creator%3A&q-type1=all&l-availability=y%2Ff&q=+date%3A[2000+TO+2014]&q-year2-date=2014&n=1', function(error, response, html) {
    if (!error && response.statusCode == 200) {
        var $ = cheerio.load(html, {
          xmlMode: true
        });
        console.log($('work').attr('id'))
    }
});
var id = $(this);
console.log(id.text());