Получить значение XML-элементов для HTML-элементов

У меня есть такой XML:

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<rss xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" version = "2.0">
    <channel>
        <title>title of XML</title>
        <description>description of XML</description>
        <ttl>720</ttl>
        <item>
            <title>title_01</title>
            <description>value of item 01</description>
        </item>
        <item>
            <title>title_02</title>
            <description>value of item 02</description>
        </item>
        .
        .
        .
        .
        <item>
            <title>title_XX</title>
            <description>value of item XX</description>
        </item>


    </channel>
</rss>

И мне нужно получить значение от элементов к элементам HTML. Из элемента ITEM, где TITLE имеет конкретное уникальное значение, поместите значение DESCRIPTION в элемент HTML:

<body>
    <div class = "cont">

    <div>
    <span id = "some_id01">Here put the DESCRIPTION value from the XML ITEM which contains the specific TITLE value</span>
    <span id = "some_id02"></span>
    </div>

    <div>
    <span id = "some_id03"></span>
    <span id = "some_id04"></span>
    </div>

    <div>
    <span id = "some_idXX"></span>
        </div>

    </div>

    </body>

Что-то вроде этого. Но здесь нет циклов, только фиксированное количество HTML-элементов. Может ли кто-нибудь помочь мне с оптимальным кодом, в XML может быть до 100 элементов ITEM.

Большое спасибо

Можете ли вы указать, используете ли вы свой XML в качестве базы данных для онлайн-сервиса или это своего рода автономное упражнение? В первом случае нам нужно знать, какой серверный язык вы используете. В последнем случае, вероятно, вам нужно преобразование XQuery.

MrD 09.04.2018 11:08

Привет, XML размещен на веб-сервере. например 4ds.online/bs/bistroreal/pondelitest.xml Нет базы данных - она ​​загружается вручную через FTP. Можно использовать php, jqeury ...

Johnny K 10.04.2018 10:34
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
49
2

Ответы 2

Просто идея для ссылки, надеюсь, что это поможет:

const getElement = (id) => {
  return document.getElementById(id) || null;
};

const getIdByTitle = (title) => {
  return title.split('_')[1];
};

const load = (file) => {
  return new Promise((resolve, reject) => {
    let xhr = new XMLHttpRequest();
    xhr.onload = () => {
      return resolve(xhr.responseXML.documentElement);
    }
    xhr.onerror = () => {
      return reject(new Error('Error while getting XML.'));
    }
    xhr.open('GET', file);
    xhr.responseType = "document";
    xhr.send();
  });
}

const process = (xml) => {
  let nodes = Array.from(xml.getElementsByTagName('item'));
  return nodes.map((node) => {
    let title = node.getElementsByTagName('title')[0].innerHTML;
    let description = node.getElementsByTagName('description')[0].innerHTML;
    let id = getIdByTitle(title);
    return {
      id,
      title,
      description,
    }
  });
};

const display = (items) => {
  return items.map((item) => {
    let {
      id,
      description,
    } = item;

    let el = getElement(`some_id${id}`);
    if (el) {
      el.innerHTML = description;
    }
  });
};

load('relative_path_to_XML_file.xml')
  .then(process)
  .then(display)
  .catch(console.trace);

Кажется, это работает:

$(document).ready(function() {
    //feed to parse
    var feed = "pondelitest.xml";

    $.ajax(feed, {
        accepts:{
            xml:"application/rss+xml"
        },
        dataType:"xml",
        success:function(data) {



            $(data).find("title").each(function () { 
                if ($(this).text() == 'jidlo01' ) {
                        var v01 = $(this).next();
                        $("#jidlo01").append($.trim(v01.text()));
                        }
                if ($(this).text() == 'jidlo02' ) {
                        var v01 = $(this).next();
                        $("#jidlo02").append($.trim(v01.text()));
                        }                       
            });
        // remove empty items
        $('span.title').each(function() {
            if ($(this).is(':empty')) $(this).parent().remove();
});

        }  
    });

});

Другие вопросы по теме