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

I have duplicate child elements in my RSS feed. Won't parse it in JavaScript

提问人:Mayank 提问时间:10/18/2023 最后编辑:ZakMayank 更新时间:10/19/2023 访问量:52

问:

我正在从这个 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>666

  2. .find()链接在下面:

const RSS_URL =*** URL ***;

$.ajax(RSS_URL, {
  accepts: {
     xml: "application/rss+xml"
  },
  dataType: "xml",
  success: function(data) {
    console.log(data)
    $(data)
      .find("item")...
javascript php ajax rss 播客

评论

0赞 Zak 10/18/2023
我们在这里需要更多信息。你不清楚你预期的解析数据应该是什么样子。
0赞 GetSet 10/18/2023
WHat被束缚了吗?.find
0赞 Mayank 10/18/2023
@Zak 嘿!预期的解析数据应为 6。我的代码中的那个解析了 66。我假设这是因为重复的子值。
0赞 Mayank 10/18/2023
@GetSet更新了我的答案以添加此信息。它被链接到: const RSS_URL = *** URL ***;$.ajax(RSS_URL, { accepts: { xml: “application/rss+xml” }, dataType: “xml”, success: function(data) { .........

答:

0赞 Zak 10/18/2023 #1

如果你的目标是抓住这两个元素,不管有多少......为什么不直接创建一个 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)
}