Использование DOMParser в XML для получения атрибута с использованием JavaScript - PullRequest
0 голосов
/ 08 октября 2019

У меня есть XML-файл, который я получаю из API, и небольшой раздел:

       <Abstract>
            <AbstractText Label="BACKGROUND">A large ...</AbstractText>
            <AbstractText Label="METHODS">We modeled....</AbstractText>
            <AbstractText Label="RESULTS">Mammary glands ... </AbstractText>
            <AbstractText Label="CONCLUSIONS">We report...</AbstractText>
        </Abstract>

Мой код JavaScript:

      parser = new DOMParser();
      xmlDoc = parser.parseFromString(response.data, "text/xml");
      const abstracts = xmlDoc.querySelectorAll("AbstractText");

и с использованием

        abstracts.forEach(a => {         
        abstract_text += a.innerHTML;
        abstract_text += "<br /><br />";
      });

Я могу прочитать весь текст. Моя проблема в том, что я не могу получить значение метки. Я пробовал

    let x = a.attribute("Label").nodeValue;

и

       let x = a.attribute("Label");

как атрибуты, так и атрибуты.

Вся помощь приветствуется.

1 Ответ

1 голос
/ 08 октября 2019

Это a.getAttribute('Label') Вы хотели

Вот один из способов сделать это

const xml = `<Abstract>
    <AbstractText Label="BACKGROUND">A large ...</AbstractText>
    <AbstractText Label="METHODS">We modeled....</AbstractText>
    <AbstractText Label="RESULTS">Mammary glands ... </AbstractText>
    <AbstractText Label="CONCLUSIONS">We report...</AbstractText>
</Abstract>`;

parser = new DOMParser();
xmlDoc = parser.parseFromString(xml, "text/xml");
const abstracts = xmlDoc.querySelectorAll("AbstractText");

abstracts.forEach(a => {
  console.log(a.textContent, a.getAttribute('Label'));
});

Вы также можете

a.attributes['Label'].nodeValue
a.attributes.Label.nodeValue
a.attributes['Label'].textContent
a.attributes.Label.textContent
...