使用元素树和XPath查找多个XML元素

2024-04-28 17:58:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还很陌生,正在尝试使用元素树从包含大量研究文章元数据的XML文件中提取多个字段。虽然我能够使用两种不同的方法(元素树和XPath——如下所示)分别获得所需的字段,但我需要的是一种将这些方法组合成一段代码的方法,该代码将返回所有文章的文章ID和相应的资金信息。你知道吗

更新:

我期望的示例输出是: “20.2019/ABC-2019-0111, 这项工作得到了国家卫生研究院的支持

理想情况下,每篇文章的数据将由一个特殊字符分隔,我可以用它在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')])

Tags: 数据方法代码id元素示例typearticle