解析大型XML文件以查找链接到另一块数据的数据



我有一个9mb的xml文件,其中包含关于我正在为其编写脚本的系统的信息。系统保存名为symbols的小文件,每个符号有一个tick type,属于一个estate

数据以这种格式存储。

<Symbol SymbolName="name" Estate="estate" TickType="type" />

我现在解析这个文件,并写了3个文件,每个文件都包含一个列表,其中包含三个内容之一。

我需要做的是以某种方式将数据存储在列表或字典中,以便所有符号都可以写入文件,而其对应的类型和属性则写入文件的另一部分。

结果是一个html文件,有一个下拉菜单,你选择和estate,它显示symbols在其中,并给出每个symboltype

我目前的解析方法是使用xml.dom.minidom模块,然后使用getElementsByTagName这确实返回我想要的每个东西的3个列表,但不将它们链接到其他列表的相应成员。

安装以下库

pip install beautifulsoup4
pip install flask

,然后运行下面的og代码

from bs4 import BeautifulSoup
from flask import Flask, request, jsonify
xml = '''
<Symbol SymbolName="A" Estate="e1" TickType="t1" />
<Symbol SymbolName="B" Estate="e1" TickType="t2" />
<Symbol SymbolName="C" Estate="e1" TickType="t2" />
<Symbol SymbolName="D" Estate="e2" TickType="t2" />
'''
soup = BeautifulSoup(xml)
symbols = soup.find_all('symbol')
app = Flask(__name__)
@app.route("/")
def filter_symbols():
    constraint = request.args.get('estate', None)
    estate_in_req = 'estate' in request.args
    return jsonify(symbols=[
        {'name': s.get('symbolname'), 'type': s.get('ticktype')}
        for s in symbols if not estate_in_req or s.get('estate') == constraint
    ])
if __name__ == "__main__":
    app.run(debug=True)

现在你有了一个可以解决你的问题的web服务器。

localhost: 5000/?房地产= e1

将输出:

{
  "symbols": [
    {
      "name": "A", 
      "type": "t1"
    }, 
    {
      "name": "B", 
      "type": "t2"
    }, 
    {
      "name": "C", 
      "type": "t2"
    }
  ]
}

到你的浏览器

我希望你可以使用代码片段继续工作与你的解决方案。

如果有性能问题,请使用数据库。;)

——brunsgaard

最新更新