如何使用Python 2.7解析XML值

时间:2016-09-06 08:43:55

标签: xml python-2.7 parsing xml-parsing

API请求:http://iss.ndl.go.jp/api/opensearch?isbn=9784334770051

我需要从上面通过API提供的XML中获取一个特定值。 我尝试专门从<item><dc:title>的值中获取所有值 以下是我目前的代码,我试图从项目中获取所有价值,但没有工作。

import codecs
import sys
import urllib
import urllib2
import re, pprint
from xml.etree.ElementTree import *
import csv
from xml.dom import minidom
import xml.etree.ElementTree as ET

 errorCheck = "0"
isbn = raw_input("Enter IBSN Number Please ")
isIsbn = len(isbn)


if isIsbn == 10 or isIsbn == 13:
    errorCheck = 1;

    url = "http://iss.ndl.go.jp/api/opensearch?isbn=%s" % isbn
    req = urllib2.Request(url)

    response = urllib2.urlopen(req)
    XmlData = response.read()
    root = ET.fromstring(XmlData)

    print(root.tag,root.attrib)

    for child in root.find('item'):
        print child.tag
        print child.attrib
        print child.text

if errorCheck == "0":
    print "It is not ISBN"

1 个答案:

答案 0 :(得分:1)

<item>不是根元素的直接子元素,因此您无法通过直接提及元素(root.find('item'))来找到它。您可以使用.//item在根目录中的任何位置查找item元素:

for child in root.find('.//item'):

或指定从根到<item>的确切路径:

for child in root.find('channel/item'):

至于查找<dc:title>元素,请参阅:Parsing XML with namespace in Python via 'ElementTree'