为什么 DOMParser 不能解析这个 XML?

Why can't DOMParser parse this XML?

我正在调用 Google 地图 API,得到的响应看起来很基本 XML。

尝试使用 DOMParser 解析 XML 失败,出现某种解析错误,但我不明白为什么。

完整代码:

    let result: ILatitudeLongitude = { latitude: 0, longitude: 0 };

    let axiosConfig = {
        headers: { 'Accept': 'application/xhtml+xml' }
    };
    let url = 'http://some-server/api/GoogleMaps/GetGoogleAPI?fullAddress=123 some st, suburb, state, 1000';
    let response = await axios.get(url, this.axiosConfig);
    if (response && response.data) {
        let parser = new DOMParser();
        // response.data looks like this: "<lat>-34.9441798</lat><lng>138.5997218</lng>"
        let xmlDoc = parser.parseFromString(response.data, "application/xhtml+xml");
        if (xmlDoc) {
            try {
                let lng = xmlDoc.getElementsByTagName('lng')[0].childNodes[1].nodeValue;
                let lat = xmlDoc.getElementsByTagName('lat')[0].childNodes[1].nodeValue;

                if (lat && lng) {
                    result.latitude = +lat;
                    result.latitude = +lng;
                }
            } catch (e) {
                errorHandler.handle(e);
            }
        }
    }
    return result;

尝试检索 'lng' 元素失败:

xmlDoc.getElementsByTagName('lng')

=> 0 个结果

如果我通过以下语句检查 xmlDoc 的元素:

xmlDoc.querySelectorAll('*')

我看到它解析了 'lat' 元素,但随后它给了我一个 parsererror 元素。深入研究 parsererror 元素,我发现:

“第 1 行第 61 列的错误:文档末尾的额外内容”

这令人困惑,因为 XML 字符串甚至没有 61 个字符......其长度为 46 个字符。

关于如何成功解析 XML 的这个小片段有什么想法吗?

一个XML文档必须只有一个根元素,顶层不能有两个元素:XML Specification.