带有ElementTree(python)的xPath,用于解析字符串中的XML

时间:2018-02-18 00:09:29

标签: python xml xpath

我使用ElementTree解析从网站检索到的某些XML,但不知何故,我无法看到能够使用" .find"或" .findall"。我试图使用ElementTree,我厌倦了lxml.etree,没有任何东西在和我合作。我的目标是从我从URL检索到的XML文件中检索//课程。

import requests
import xml.etree.ElementTree as ET
res = requests.get(COURSES_URL).text #Storing the XML into res
XML = ET.fromstring(res)
print(XML.findall('//COURSE'))

COURSES_URL是我自己的URL,我从中检索XML,是的,因为我得到了我想要的输出XML(样本),所以它正在工作:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by Oracle Reports version 11.1.2.1.0 -->
<SYRSPOS_REP>
  <LIST_G_PROGRAM>
    <G_PROGRAM>
      <SPRIDEN_ID>U712214</SPRIDEN_ID>
      <STUDENT_NAME>Mark Adam Johns</STUDENT_NAME>
      <SMBPOGN_PIDM>98</SMBPOGN_PIDM>
      <SMBPOGN_REQUEST_NO>46</SMBPOGN_REQUEST_NO>
      <COURSE ID=1411001>PASS</COURSE>
      <COURSE ID=1411023>PASS</COURSE>
      <COURSE ID=1411136>PASS</COURSE>
    </G_PROGRAM>
  </LIST_G_PROGRAM>
</SYRSPOS_REP>

1 个答案:

答案 0 :(得分:0)

解决: 显然我有2个问题。 首先,我不能在打印中使用findall,因为它返回一个列表,我必须在循环中执行。 (for i in XML.findall()),然后我打印i.text() 其次,我必须在引号后添加一个点,如".//COURSES"