使用Javascript从XML API中提取指定match_id对应字段的方法咨询
功能实现代码
实现逻辑
- 遍历所有event节点,根据传入的目标赛事ID匹配对应节点
- 校验查询字段合法性,仅允许查询o1、o2字段
- 覆盖异常场景兜底:未匹配到赛事、查询字段不存在、字段非法
完整代码
function findSpecific(xml, choice, place) { // place为传入的目标match_id,choice为要查询的字段,支持传入'o1'或'o2' const eventList = xml.getElementsByTagName('event'); for (let i = 0; i < eventList.length; i++) { const currentEvent = eventList[i]; const curMatchId = currentEvent.getElementsByTagName('match_id')[0].textContent.trim(); // 匹配到目标赛事 if (curMatchId === String(place)) { // 校验查询字段合法性 if (choice !== 'o1' && choice !== 'o2') { return '查询字段非法,仅支持o1、o2'; } const targetField = currentEvent.getElementsByTagName(choice)[0]; if (!targetField) { return `当前赛事无${choice}字段`; } return targetField.textContent.trim(); } } return `未找到ID为${place}的对应赛事`; }
前置注意事项
如果你的API返回的是XML字符串,需要先转换为XML Document对象再传入函数,转换代码如下:
const parser = new DOMParser(); const xmlDoc = parser.parseFromString(你的XML字符串变量, "text/xml");
调用示例
// 查询赛事ID2079876的o1字段值 console.log(findSpecific(xmlDoc, 'o1', 2079876)); // 输出2.57 // 查询赛事ID2081006的o2字段值 console.log(findSpecific(xmlDoc, 'o2', 2081006)); // 输出14.50
内容的提问来源于stack exchange,提问作者NinjitsuIXX
相关产品推荐
相关产品推荐

