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

时间:2014-08-01 08:06:20

标签: python html xml parsing

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

数据以此格式存储。

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

我目前正在解析文件并写入3个文件,每个文件都包含三个内容之一的列表。

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

结果旨在成为一个html文件,其中包含您选择的下拉列表和estate,并在其中显示symbols并提供每个type symbol }。

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

1 个答案:

答案 0 :(得分:0)

安装以下文件

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)

现在你有了一个解决问题的网络服务器。

本地主机:5000 /地产= E1

将输出:

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

到您的浏览器。

我希望您可以使用代码段继续使用您的解决方案。

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

- brunsgaard