为什么 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.
我正在调用 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.