如何使用 Node js 获取 XML 的属性值?

How can I get an attribute value of an XML using Node js?

我正在使用 Node js 开发一个小项目,我必须在其中访问 Musicbrainz API 并从中获取一些数据。

问题是我正在尝试使用 URL 从 API 获取值,然后获取结果页面的 XML 版本并最终获取该值我想(这是“计数”)使用节点 js (https://www.npmjs.com/package/xmldom) 的 XMLDOM 包。

XML 看起来像这样,我想得到计数的值(红色下划线):

这是我用来获取值的函数:

// Loading of necessary modules and creation of a new application.
var express = require("express"); 
var app = express();
var request = require("request");
var DOMParser = new (require('xmldom')).DOMParser;

// URL of the musicbrainz API.
var root_url = "https://musicbrainz.org/ws/2/";

// Example: MBID = 0da580f2-6768-498f-af9d-2becaddf15e0
function getReleases(MBID){

    var releases_URL = root_url + "release-group/" + MBID + "?inc=releases"
    var count
    request({
        headers: {
            'User-Agent': 'my-musicbrainz-client',
        },
        url: releases_URL,
        json: false
    }, async function (error, response, body) {
    
        if (!error && response.statusCode === 200) {
            var document = DOMParser.parseFromString(body);
            var x = document.getElementsByTagName("release-list")
            console.log("Release list = "+ x)

            count = x.getAttribute('count')  
            console.log("COUNT:"+ y)                                                                  
            return count
        }else{
            console.log("ERROR IN FUNCTION")
        }
    })

}

但问题是 count = x.getAttribute('count') 不工作,因为它抛出 UnhandledPromiseRejectionWarning: TypeError: x.getAttribute is not a function。这怎么可能,因为我安装了 XMLDOM 包并且函数 getAttribute 存在?我用错了吗?是否有另一种获取“计数”值的方法?

谢谢!

document.getElementsByTagName returns 一个节点列表,因此 x[0] 可能是一个元素节点,如果找到元素,您可以为其调用 getAttribute。在 W3C DOM APIs 的世界里,我认为使用 getElementsByTagNameNS 会更安全,因为你的元素在命名空间中,但我不知道 Node.js API 告诉你是否需要它。