我的 RSS 源中有重复的子元素。不会在 JavaScript 中解析它

问题描述 投票:0回答:1

我从这个 URL 中提取 RSS 数据,这就是它们的数据结构。

<item>
<itunes:episodeType>full</itunes:episodeType>
<itunes:season>6</itunes:season>
<itunes:episode>49</itunes:episode>
<itunes:season>6</itunes:season>
</item>

它有重复的子元素 itunes:season。如何在 JavaSCript 中正确解析它?任何帮助将不胜感激! :)

这是我的代码的要点:

        success: function(data) {
          
             .find("item")
             .each(function() {
              const el = $(this);

               const seasonLS = el.find("itunes\\:season").text();
               const episodeLS = el.find("itunes\\:episode").text();
          
    };

我尝试通过子名获取它,但重复的子名将其丢弃。

编辑:

抱歉问题不清楚。这里有更多信息。

  1. itunes:season 的预期输出是 6。这个输出是 66。

  2. .find 链接在下面:

常量 RSS_URL =

*** URL ***
;

    $.ajax(RSS_URL, {
        accepts: {
            xml: "application/rss+xml"
        },

        dataType: "xml",

        success: function(data) {
            console.log(data)

$(数据) .find("项目")...

javascript php ajax rss podcast
1个回答
0
投票

如果你的目标是只获取这两个元素,无论有多少个..为什么不直接创建一个 DOM 对象,并按标签搜索..然后找到每个元素的第一个索引:

const htmlString = `<item>
<itunes:episodeType>full</itunes:episodeType>
<itunes:season>6</itunes:season>
<itunes:episode>49</itunes:episode>
<itunes:season>6</itunes:season>
</item>
<item>
<itunes:episodeType>full</itunes:episodeType>
<itunes:season>7</itunes:season>
<itunes:episode>55</itunes:episode>
<itunes:season>5</itunes:season>
</item>`;

const domParser = new DOMParser();
const docElement = domParser.parseFromString(htmlString, "text/html").documentElement;

var emCollection = docElement.getElementsByTagName("item");
for (var i = 0; i < emCollection.length; i++) {
  const seasonLS = emCollection[i].getElementsByTagName('itunes:season')[0].innerHTML;
  const episodeLS = emCollection[i].getElementsByTagName('itunes:episode')[0].innerHTML;
  console.log("Episode: " + episodeLS + "\n Season: " + seasonLS)
}

© www.soinside.com 2019 - 2024. All rights reserved.