Задать вопрос
@Dichkin
gg

Как получить текстовое содержимое тега xml?

Добрый день!
Есть xml документ, вот его фрагмент:

<offer internal-id="12345">
<living-space>
<value>31</value>
<unit>кв. м</unit>
</living-space>
<kitchen-space>
<value>11</value>
<unit>кв. м</unit>
</kitchen-space>
<image>https://example.website.yandexcloud.net/files/ycKZLv7B0GUZled.jpg</image>
<image>https://example.website.yandexcloud.net/files/ycKZLv7B0GUZled.jpg</image>
</offer>


Мне необходимо получить текстовое содержимое тегов. Делаю я это таким способом c помощью cheerio и axios библиотек:
...
listItems.each((idx,  el) => {
const offerSelector = ('offer[internal-id="12345"]')
const item = {};
item.living_space_value = $(el).find(offerSelector).children('living-space').children('value').text() /получаю значение '31'
item.kitchen_space_unit = $(el).find(offerSelector).children('kitchen-space').children('unit').text() /
получаю значение 'кв. м'
item.image = $(el).find(offerSelector).find('image').text() / но когда хочу получить значения тега image, у меня возвращается пустая строка...
  });

Подскажите пожалуйста, как мне получить это значение???
Заранее спасибо
  • Вопрос задан
  • 219 просмотров
Подписаться 1 Простой 8 комментариев
Решения вопроса 1
black1277
@black1277
Вольный стрелок
Вот накидал, у меня все работает. Пробуйте:
const cheerio = require('cheerio')

const xml = `
<offer internal-id="12345">
<living-space>
<value>31</value>
<unit>кв. м</unit>
</living-space>
<kitchen-space>
<value>11</value>
<unit>кв. м</unit>
</kitchen-space>
<image>https://example.website.yandexcloud.net/files/ycKZLv7B0GUZled.jpg</image>
<image>https://example.website.yandexcloud.net/files/ycKZLv7B0GUZled.jpg</image>
</offer>
`
async function main() {
  try {
    let $ = await cheerio.load(xml, {
      xmlMode: true
    })
    let title = $('image').text()
    console.log('title', title)
  } catch (e) {
    console.log(e)
  }
}
main()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы