Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的Python不是';无法正确读取XML_Python_Xml_Python 3.x - Fatal编程技术网

我的Python不是';无法正确读取XML

我的Python不是';无法正确读取XML,python,xml,python-3.x,Python,Xml,Python 3.x,下面是我访问XML文件的python代码: import xml.etree.ElementTree as ET def display_book(book): root = ET.parse(source="library.xml") info = root.iter("catalog") for elem in info: name = elem.find("book").attrib['id'] if name == boo

下面是我访问XML文件的python代码:

import xml.etree.ElementTree as ET

def display_book(book):

    root = ET.parse(source="library.xml")

    info = root.iter("catalog")

    for elem in info:
        name = elem.find("book").attrib['id']

        if name == book:
            print(name)

    return "Book Not Found"

#Main
display_book("bk105")
以下是XML代码的示例:

<catalog>
    <book id="bk101">
        <author>Gambardella, Matthew</author>
        <title>XML Developer's Guide</title>
        <genre>Computer</genre>
        <price>44.95</price>
        <publish_date>2000-10-01</publish_date>
        <description>
              An in-depth look at creating applications with XML.
        </description>
    </book>
    <book id="bk102">
        <author>Ralls, Kim</author>
        <title>Midnight Rain</title>
        <genre>Fantasy</genre>
        <price>5.95</price>
        <publish_date>2000-12-16</publish_date>
        <description>
              A former architect battles corporate zombies, an evil sorceress,                         
              and her own childhood to become queen of the world.
        </description>
    </book>
</catalog>

马修·甘巴德拉
XML开发人员指南
电脑类
44.95
2000-10-01
深入了解如何使用XML创建应用程序。
拉尔斯,金
夜雨
幻想
5.95
2000-12-16
一位前建筑师与一位邪恶的女巫——企业僵尸战斗,
和她自己的童年成为世界女王。
这些书从“bk101”到“bk112”,代码只找到作为第一本书的“bk101”的id,而不是遍历每一个书id并与输入交叉引用,因此程序从不输出任何内容。甚至没有“找不到书”。

elem.find(“书”)
只返回目录中的第一本书。您需要使用
elem.findall(“book”)
,然后对它们进行迭代

但是您可以使用
root.iter(“book”)
直接遍历这些书籍

for elem in root.iter("book"):
    name = elem.attrib('id')
    if name == book:
        print(name)
else:
    print("Book not found")

您还应该将错误消息放在
else:
块中。否则,即使找到该书,它也会被返回。

您可以切换到使用
findall

import xml.etree.ElementTree as ET

def display_book():

    root = ET.parse(source="library.xml")

    info = root.iter("catalog")

    for elem in info:
        books = elem.findall("book")
        for book in books:
            print book.attrib['id']


# Main
display_book()