You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解析含多文本项的XML流时代码无输出,请求排查问题

问题排查与修复方案

1. 先修复致命语法错误

你的代码里有一处明显的语法错误,直接导致脚本执行中断,根本无法进入XML解析的逻辑:

if (`your text`title === 'AwayPoints') {

这里的`your text`是多余的无效代码,删掉即可,修正后:

if (title === 'AwayPoints') {

2. 跨域请求(CORS)问题排查

即使修复了语法错误,你大概率会遇到跨域资源共享限制:浏览器会阻止前端脚本直接请求不同域名下的资源,除非目标服务器配置了允许你当前域名的CORS响应头。

你可以打开浏览器开发者工具(F12)→ 控制台标签,查看是否有类似No 'Access-Control-Allow-Origin' header is present on the requested resource的错误提示。

如果遇到CORS问题,可参考以下解决方式:

  • 若有权限修改目标服务器,添加Access-Control-Allow-Origin响应头,允许你的域名访问
  • 本地开发时,可使用代理服务器转发请求(比如用Node.js搭建简单代理,或临时关闭Chrome浏览器的跨域限制,仅用于开发测试)

3. 代码健壮性优化

为避免XML结构变化导致脚本崩溃,建议给DOM元素获取添加存在性判断:

for (let i = 0; i < items.length; i++) {
  const titleElem = items[i].getElementsByTagName('title')[0];
  const descElem = items[i].getElementsByTagName('description')[0];
  if (!titleElem || !descElem) continue; // 跳过缺少必要节点的item

  let title = titleElem.textContent;
  let descript = descElem.textContent;
    
  if (title === 'AwayPoints') {
    descriptionContainer.textContent = descript;
    break;
  }
}

完整修复后的代码

<!DOCTYPE html>
<html>
<head>
    <title>XML Feed </title>
    <script>
        function fetchXMLFeed() {
            fetch('https://solidsports.com.au/scores/Venue_GPS/live/Scores.xml')
                .then(response => {
                    // 先检查请求是否成功
                    if (!response.ok) {
                        throw new Error(`HTTP error! status: ${response.status}`);
                    }
                    return response.text();
                })
                .then(data => {
                    const parser = new DOMParser();
                    const xmlDoc = parser.parseFromString(data, 'text/xml');
                    const items = xmlDoc.getElementsByTagName('item');
                    
                    let descriptionContainer = document.getElementById('description-container');
                    for (let i = 0; i < items.length; i++) {
                      const titleElem = items[i].getElementsByTagName('title')[0];
                      const descElem = items[i].getElementsByTagName('description')[0];
                      if (!titleElem || !descElem) continue;

                      let title = titleElem.textContent;
                      let descript = descElem.textContent;
                        
                      if (title === 'AwayPoints') {
                        descriptionContainer.textContent = descript;
                        break;
                      }
                    }
                })
                .catch(error => {
                    console.error('Error fetching XML feed:', error);
                    // 把错误信息展示到页面,方便调试
                    document.getElementById('description-container').textContent = `加载失败: ${error.message}`;
                });
        }
    </script>
</head>
<body onload="fetchXMLFeed()">
    <h2>Description for Item with Title "AwayPoints":</h2>
    <div id="description-container"></div>
</body>
</html>

内容的提问来源于stack exchange,提问作者Rob Melloy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 16:37:14