Как получить данные c XML относительно значения массива в jquery - PullRequest
0 голосов
/ 28 марта 2020

У меня есть xml данные значения и текстовые теги. в котором мне нужно указать значения c и соответствующий текст для перечисления. Указанные значения c указаны в массиве.

xml

<menu>
<variant>
    <value>1</value>
    <text>12 pa</text>
</variant>
<variant>
    <value>2</value>
    <text>30 pa</text>
</variant>
<variant>
    <value>3</value>
    <text>40 pa</text>
</variant>
<variant>
    <value>4</value>
    <text>50 pa</text>
</variant>
</menu>

My Array

var arr = ["1", "2", "4"]

все это должно быть закодировано в jquery

Ответы [ 2 ]

0 голосов
/ 04 апреля 2020

Следующий код сработает

$("#variant_model").empty()

                var data = response1.results[1][0].Variant;
                var arrdata = data.split(';');
                arrdata.shift();
                function loadfail() {
                    alert("Error: Failed to Load Menu Data : XML");
                }
                $.ajax({
                    url: '/Prueba/FCD/menudata/menu.xml',
                    success: menu,
                    error: loadfail
                });
                console.log(arrdata);

                function menu(document) {
                    var array2 = arrdata;
                    var array1 = []
                    $(document).find("variant").each(function () {
                        var text = $(this).find('text').text();
                        var value = $(this).find('value').text();
                        var combo = { text, value }
                        array1.push(combo)
                    })
                    array1 = array1.filter(function (item) {
                        return array2.includes(item.value);
                    })

                    array1.forEach(function (item) {
                        $("#variant_model").append($("<option></option>").val(item.value).html(item.text));
                    })
                    $('#variant_model option[value="' + response.item[0][0].Variant + '"]').attr('selected', true);

                }
0 голосов
/ 28 марта 2020

Возможно, это не самый эффективный способ, но вы могли бы просто обработать xml как строку, разделить и проанализировать ее.

https://jsfiddle.net/an14zo2p/

let xml = `<menu>
    <variant>
        <value>1</value>
        <text>12 pa</text>
    </variant>
    <variant>
        <value>2</value>
        <text>30 pa</text>
    </variant>
    <variant>
        <value>3</value>
        <text>40 pa</text>
    </variant>
    <variant>
        <value>4</value>
        <text>50 pa</text>
    </variant>
    </menu`.replace(/[\n\t]/g, ''); //remove new lines and tabs

let arr = xml.split('<value>');        
arr.shift(); //arr[0] is blank

$.each(arr, function(index, variant) {
    arr[index] = {
    text: variant.substring(variant.indexOf('<text>') + 6, variant.indexOf('</text>')),
    value: variant.substr(0, variant.indexOf('</value>'))
  };
});

document.write(JSON.stringify(arr));
console.log(arr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...