У меня есть страница с данными, которые мне нужно проанализировать, в формате
<tag>dataIwant</tag>
<tag>dataIwant</tag>
<tag>dataIwant</tag>
<othertag>moarData</othertag>
<othertag>moarData</othertag>
Для простоты я хотел бы извлечь все наборы любого именованного тега в виде массива (желательно только значения). Например:
array1(dataIwant,dataIwant,dataIwant);
array2(moarData,moarData);
Это легко извлечь с помощью jQuery, ЕСЛИ они были названы элементами или имели классы, но это не так. Все, что у меня есть, это настраиваемые тэги до 20 или более подряд с одинаковыми именами. Если я смогу преобразовать их в массив, это упростит мою работу с ними. Конечно, я мог бы написать свою собственную функцию для анализа информации, но нет ли более простого способа сделать это?
Альтернативные предложения приветствуются, пока я могу получить доступ к данным и сохранить порядок, в котором они были прочитаны (теги представляют собой местоположения данных в форме, которую мне нужно заполнить, поэтому порядок имеет значение).
Являются ли данные достоверными XML случайно? Или это просто текст? В зависимости от данных ответы могут быть очень простыми или очень сложными. Например, у файла есть заголовки? Например, есть ли строка данных, в которой указано, что используются два тега: tag и othertag?
Я считаю, что это действительный XML, хотя, когда я попытался проанализировать его как таковой, он дал мне неверную ошибку данных. Я подумал, что будет проще выполнить команду для строки, чтобы вытащить весь тег X в виде массива, затем тег Y, затем Z. Я уже знаю имена тегов.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете просто использовать метод .each (), чтобы собрать весь текст из каждого настраиваемого тега в массив.
Кроме того, вы можете использовать document.querySelectorAll, чтобы получить список, который затем можно перебирать. Тогда это потребует дополнительной работы, поскольку он также включит тег в массив.
Обратите внимание, что я добавил правило стиля, чтобы все отображалось в отдельных строках.
var tagArr = [];
$('tag').each(function() {
var text = $(this).text();
tagArr.push(text);
})
console.info(tagArr); // gives ["dataIwant","dataIwant","dataIwant"]
var otherTagArr = [];
$('otherTag').each(function() {
var text = $(this).text();
otherTagArr.push(text);
})
console.info(otherTagArr); //gives gives "moarData","moarData"]tag,otherTag {display:block}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<tag>dataIwant</tag>
<tag>dataIwant</tag>
<tag>dataIwant</tag>
<othertag>moarData</othertag>
<othertag>moarData</othertag>У меня есть данные в строке, поэтому технически я сделал $ (strpage) .find ('tagname'). Each, но это сработало. Это просто и воспроизводимо, поэтому я отмечаю это как ответ.
Поэтому, если у вас есть общий родительский элемент, и вы не знаете, какие имена тегов вам нужны, вы можете просмотреть дочерние элементы и вставить их в объект или массивы, используя имя тега.
var wrapper = document.getElementById("wrapper");
var set = Array.from(wrapper.children).reduce( function(o, el){
o[el.tagName] = o[el.tagName] || [];
o[el.tagName].push(el.textContent)
return o
}, {});
console.info(set)<div id = "wrapper">
<tag>dataIwant</tag>
<tag>dataIwant</tag>
<tag>dataIwant</tag>
<othertag>moarData</othertag>
<othertag>moarData</othertag>
</div>
Так это пользовательские элементы HTML? Вы знаете, что это за элементы раньше? Где они живут? Пример из реального мира поможет легко ответить на этот вопрос.