Cherrypy和解析来自多个文件的XML数据

2024-06-02 08:45:37 发布

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

所以这是一个关于另一个问题的文章。我已经成功地从多个xml文件中提取了数据,并且能够使用print函数在终端中显示数据,但是当我试图使用return函数在浏览器中显示数据时,我只从第一个文件中获取数据。你知道为什么我只从第一个文件而不是所有文件中获取数据吗?谢谢!在

from xml.dom.minidom import parse, parseString
import os, glob, re
import cherrypy
class Root(object):
    def index(self):
        path = 'C:\Vestigo\XML'

        TOTALXML = len(glob.glob(os.path.join(path, '*.xml')))
        print TOTALXML
        i = 0

        for XMLFile in glob.glob(os.path.join(path, '*.xml')):
            xmldoc = parse(XMLFile)
            order_number = xmldoc.getElementsByTagName('Extrinsic')[0].firstChild.data
            order_name = xmldoc.getElementsByTagName('DeliverTo')[0].firstChild.data
            street1 = xmldoc.getElementsByTagName('Street1')[0].firstChild.data
            state = xmldoc.getElementsByTagName('State')[0].firstChild.data
            zip_code = xmldoc.getElementsByTagName('PostalCode')[0].firstChild.data
            OUTPUTi = order_number+' '+order_name+' '+street1+' '+state+' '+zip_code
            i += 1
            print OUTPUTi
        return (OUTPUTi, """<br><br><a href="/exit">Quit</a>""")
    index.exposed = True

    def exit(self):
        raise SystemExit(0)
    exit.exposed = True

def start():
    import webbrowser
    cherrypy.tree.mount(Root(), '/')
    cherrypy.engine.start_with_callback(
        webbrowser.open,
        ('http://localhost:8080/',),
        )
    cherrypy.engine.block()

if __name__=='__main__':
    start()

Tags: 文件数据pathimportdataosdeforder
1条回答
网友
1楼 · 发布于 2024-06-02 08:45:37

您没有在任何地方收集数据;您将所有数据存储在一个名为OUTPUTi的变量中,然后只返回该变量的最后一次迭代。Python不会神奇地使该变量使用i计数器。在

使用列表收集字符串:

    TOTALXML = len(glob.glob(os.path.join(path, '*.xml')))
    print TOTALXML
    OUTPUT = []

    for XMLFile in glob.glob(os.path.join(path, '*.xml')):
        xmldoc = parse(XMLFile)
        order_number = xmldoc.getElementsByTagName('Extrinsic')[0].firstChild.data
        order_name = xmldoc.getElementsByTagName('DeliverTo')[0].firstChild.data
        street1 = xmldoc.getElementsByTagName('Street1')[0].firstChild.data
        state = xmldoc.getElementsByTagName('State')[0].firstChild.data
        zip_code = xmldoc.getElementsByTagName('PostalCode')[0].firstChild.data
        OUTPUT.append(order_number+' '+order_name+' '+street1+' '+state+' '+zip_code)
        print OUTPUT[-1]

    OUTPUT = ''.join(OUTPUT)
    return (OUTPUT, """<br><br><a href="/exit">Quit</a>""")

相关问题 更多 >