Как получить значение указанного узла в дереве XML с использованием языка R

У меня есть XML-файл, который включает в себя rootNode и дочерний узел с атрибутами, которые обрабатывают значения.

Я использую язык R для работы с XML-файлом.

что мне нужно, это отобразить результаты сотрудников, которые находятся в отделе ИТ

Как отобразить идентификатор или имя сотрудников, которые находятся в отделе ИТ?

я использовал этот код:

print(getNodeSet(rootnode,"//EMPLOYEE/DEPT[@DEPT='IT']"))

где rootnode - переменная, которая обрабатывает значение: RECORDS

ЭТО НЕ РАБОТАЕТ

XML-файл:

<RECORDS>
   <EMPLOYEE>
      <ID>1</ID>
      <NAME>Rick</NAME>
      <SALARY>623.3</SALARY>
      <STARTDATE>1/1/2012</STARTDATE>
      <DEPT>IT</DEPT>
   </EMPLOYEE>

   <EMPLOYEE>
      <ID>2</ID>
      <NAME>Dan</NAME>
      <SALARY>515.2</SALARY>
      <STARTDATE>9/23/2013</STARTDATE>
      <DEPT>Operations</DEPT>
   </EMPLOYEE>

   <EMPLOYEE>
      <ID>3</ID>
      <NAME>Michelle</NAME>
      <SALARY>611</SALARY>
      <STARTDATE>11/15/2014</STARTDATE>
      <DEPT>IT</DEPT>
   </EMPLOYEE>

   <EMPLOYEE>
      <ID>4</ID>
      <NAME>Ryan</NAME>
      <SALARY>729</SALARY>
      <STARTDATE>5/11/2014</STARTDATE>
      <DEPT>HR</DEPT>
   </EMPLOYEE>

   <EMPLOYEE>
      <ID>5</ID>
      <NAME>Gary</NAME>
      <SALARY>843.25</SALARY>
      <STARTDATE>3/27/2015</STARTDATE>
      <DEPT>Finance</DEPT>
   </EMPLOYEE>

   <EMPLOYEE>
      <ID>6</ID>
      <NAME>Nina</NAME>
      <SALARY>578</SALARY>
      <STARTDATE>5/21/2013</STARTDATE>
      <DEPT>IT</DEPT>
   </EMPLOYEE>

   <EMPLOYEE>
      <ID>7</ID>
      <NAME>Simon</NAME>
      <SALARY>632.8</SALARY>
      <STARTDATE>7/30/2013</STARTDATE>
      <DEPT>Operations</DEPT>
   </EMPLOYEE>

   <EMPLOYEE>
      <ID>8</ID>
      <NAME>Guru</NAME>
      <SALARY>722.5</SALARY>
      <STARTDATE>6/17/2014</STARTDATE>
      <DEPT>Finance</DEPT>
   </EMPLOYEE>

</RECORDS>

1 ответ

Решение

Кажется, вам нужно изменить getNodeSet как ниже.

getNodeSet(xml_data, "//EMPLOYEE[DEPT='IT']/NAME")


Если вы хотите иметь более одного столбца в выводе:

library(XML)
library(dplyr)

#sample data
xml_data <- xmlParse("<RECORDS>
  <EMPLOYEE><ID>1</ID><NAME>Rick</NAME><SALARY>623.3</SALARY><DEPT>IT</DEPT></EMPLOYEE>
  <EMPLOYEE><ID>2</ID><NAME>Dan</NAME><SALARY>515.2</SALARY><DEPT>Operations</DEPT></EMPLOYEE>
  <EMPLOYEE><ID>3</ID><NAME>Michelle</NAME><SALARY>611</SALARY><DEPT>IT</DEPT></EMPLOYEE>
  </RECORDS>")


df <- xmlToDataFrame(nodes=getNodeSet(xml_data, "//EMPLOYEE[DEPT='IT']")) %>%
  select(NAME, SALARY)
df

Выход:

      NAME SALARY
1     Rick  623.3
2 Michelle    611

(Правка - измененный код, чтобы в выводе было больше одного столбца)

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