我应该如何导入XML以在Flask中显示?

2022-12-05 03:05:18 发布

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

我有一个每5分钟更新一次的XML文件(data.XML)。我还有一个Flask Web服务器(app.py)在同一平台上运行。此Web服务器承载一个HTML5页面(index.html)。在HTML(index.HTML)页面上的设置位置显示XML页面中的信息并每5分钟更新一次以及刷新页面时,最有效的方法是什么?有人建议我研究AJAX和jQuery,但由于我没有这方面的经验,它们似乎有点令人困惑。我需要一些帮助来找到最有效的解决办法。对编程来说相当陌生。先谢谢你

Data.xml:

    <?xml version='1.0' encoding='utf-8'?>
    <root>
      <coin>
        <trader variable="GLDAG_MAPLE">Gold.co.uk</trader>
        <metal>Silver</metal>
        <type>Maple</type>
        <price>£31.2</price>
      </coin>
    </root>

Data2.xml:data.xml转换为字典

<root><coin><trader variable="GLDAG_MAPLE">Gold.co.uk</trader><metal>Silver</metal><type>Maple</type><price>£31.56</price></coin><coin><trader variable="GLDAG_BRITANNIA">Gold.co.uk</trader><metal>Silver</metal><type>Britannia</type><price>£32.4</price></coin><coin><trader variable="GLDAG_PHILHARMONIC">Gold.co.uk</trader><metal>Silver</metal><type>Philharmonic</type><price>£32.76</price></coin><coin><trader variable="BBPAG_MAPLE">Bullion By Post</trader><metal>Silver</metal><type>Maple</type><price>£27.12</price></coin><coin><trader variable="BBPAG_BRITANNIA">Bullion By Post</trader><metal>Silver</metal><type>Britannia</type><price>£23.88</price></coin><coin><trader variable="BBPAG_PHILHARMONIC">Bullion By Post</trader><metal>Silver</metal><type>Philharmonic</type><price>£26.88</price></coin></root>

App.py:

from flask import Flask, flash, redirect, render_template, request, session, abort, url_for
app = Flask(__name__)

# ./Home Script + Portfolio Page:
@app.route("/")
@app.route("/index")
def index():
    return render_template('index.html')

Index.html:

<td> Price from XML file needs to be presented here! </td>

Tags: appindexsilvertyperoot页面xmlvariablepricecoinmetaltradergoldgldag
1条回答
网友
1楼 · 发布于 2022-12-05 03:05:18

对于定期更新的情况,最好使用类似jQueryAjax的方法。以下是我解决您问题的过程

  1. 将xml文件转换为dict,以便在模板中轻松访问。见convert-an-xml-string-to-a-dictionar

  2. 使用Ajax和Js(如果愿意,可以使用jQuery)在给定的时间间隔请求更新。请参见以下示例update-and-render-a-value-from-flask-periodicallydynamically-update-html

  3. 然后,只需以标准方式呈现模板中的值

这样,当您的文件每5分钟更新一次时,它就可以动态地更新到模板中

如果你有任何问题,一定要告诉我