0

我有一个程序,但它不包含类概念(Python 程序遵循一些对类概念的价值)真的是 python 世界中的一个新程序。所以从原始的方式中学习帮助我在这个世界上闪耀。任何人都可以帮助我,而不是把这个问题打成负号:(

 import xml.etree.ElementTree as ET
 import sys

doc       = ET.parse("books.xml")
root      = doc.getroot() 
root_new  = ET.Element("books") 
for child in root:
    name                = child.attrib['name']
    cost                = child.attrib['cost']
    # create "book" here
    book    = ET.SubElement(root_new, "book") 
    book.set("name",name)               
    book.set("cost",cost) 
    if 'color' in child.attrib:
        color               = child.attrib['color']
        book.set("color",color) 
    if 'weight' in child.attrib:
        weight              = child.attrib['weight']
        book.set("weight",weight)
    for g in child.findall("cover"):
        # create "group" here
       cover     = ET.SubElement(cover,"cover")  
        if g.text != "goldcover":
            cover.text = g.text 
tree = ET.ElementTree(root_new)
tree.write(sys.stdout)

为了理解:我的 xml 是,

<books>
<book name="goodbook" cost="10" color="green"></book>
<book name="badbook" cost="1000" weight="100"><cover>papperback</cover><cover>hardcover</cover></book>
<book name="avgbook" cost="99" weight="120"></book>
</books>

作为python的新手,我希望有人能帮助我,热烈欢迎所有有价值的意见。

4

1 回答 1

5

好的,这不是一个很难的练习,但我会这样做。您有一系列书籍,因此我的课程将被调用BookCollection,它将采用 XML 文件的路径。

现在,您需要的是以下parseXML 方法、get书籍方法和set书籍方法。所以,一个骨架类看起来像:

class BookCollection( object ):
    def __init__( self, xml_path ):
        """call the parse with the xml_path here"""
        self.bookList = []#This is a list of tuples

    def _parse( self, xml_path ):
        """This method is private and only parses the 
           xml and stores the books as tuples in a list"""

    def get( self, title ):
        """This method allows the user of this class to get 
           a book from the list of tuples"""

    def _set( self, title, cost, weight, cover=None ):
        """This method sets and adds a book tuple to the 
           list of book tuples"""

您不需要在 python 中将一本书表示为一个类,因为这会使代码的整个位变得复杂,因此是元组。而且,为什么我将 XML 文件抽象为书籍集合。

我不会填写骨架之外的细节,因此您可以从那里学习其余部分。

编辑:看起来你还想输出 XML 我会to_xml在上面的类中添加一个方法来写出你的 XML。如果您需要删除书籍,我还会添加相关的方法,但这取决于您自己实施。

于 2012-11-06T05:56:08.193 回答