Поиск нескольких элементов XML с использованием Element Tree и XPath - PullRequest
0 голосов
/ 25 марта 2019

Я довольно новичок в Python и пытаюсь извлечь несколько полей из XML-файла, содержащего метаданные большого количества исследовательских статей, используя Element Tree.Хотя я могу получить нужные поля отдельно, используя два разных метода (Element Tree и XPath - показанные ниже), мне нужен способ объединить их в один фрагмент кода, который будет возвращать идентификаторы статей и соответствующую информацию о финансировании для всех моихстатьи.

Обновление:

Мой желаемый вывод для примера: "20.2019 / ABC-2019-0111, эта работа была поддержана NIH"

В идеаледанные для каждой статьи будут разделены специальным символом, который я мог бы использовать для разделения своих результатов в Excel.

Я раньше не использовал lxml, но с удовольствием попробую все, что будет лучше ..

Пример XML:

<root>
  <article>
    <front>
     <article-meta>
      <article-id pub-id-type="publisher-id">ABC-2019-0111</article-id>
      <article-id pub-id-type="doi">20.2019/ABC-2019-0111</article-id>
       <article-categories>
        <subj-group subj-group-type="heading">
        <subject>Science</subject>
        </subj-group>
       </article-categories> 
     </article-meta> 
      <body>
        <back>
          <sec id="sec7" sec-type="funding">
            <title>Funding</title>
            <p>This work was supported by the NIH</p>
          </sec>
        </back>
      </body>
    </front>
  </article>
</root>


to get article IDs:
for elem in tree.iter(tag='article-id'): print(elem.text)

to get funding info:
doc = ET.parse('articles.xml')
print([p.text for p in doc.findall('.//sec[@sec-type="funding"]/p')])
...