2011-06-24 27 views
6

私はPythonを使ってJSONファイルに変換したいXMLファイルを持っていますが、そのためのNTファイルは私のために働いています。Pythonを使用してxmlファイルをJSONに変換するにはどうすればよいですか?

<?xml version="1.0"?> 
<note> 
    <to>Tove</to> 
    <from>Jani</from> 
    <heading>Reminder</heading> 
    <body>Don't forget me this weekend!</body> 
</note> 

私はこのようにシリアライズするのElementTreeを使用してのsimplejsonにそれを与えて解析しています上記のXMLファイル:TypeError例外::xml.etree.ElementTree.ElementTreeオブジェクトで

from xml.etree import ElementTree as ET 
import simplejson 

tree = ET.parse(Xml_file_path) 
simplejson.dumps(tree) 

それは私にエラーを与えます0x00C49DD0はJSONシリアライズ可能ではありません。

+1

です。 xml2jsonモジュールを使用するための答えはあなたのニーズを満たすでしょう。 – razzmataz

答えて

7

これは、あなたが探しているものはおそらくです:

https://github.com/mutaku/xml2json

import xml2json 

s = '''<?xml version="1.0"?> 
<note> 
    <to>Tove</to> 
    <from>Jani</from> 
    <heading>Reminder</heading> 
    <body>Don't forget me this weekend!</body> 
</note>''' 
print xml2json.xml2json(s) 
15

別のオプションはxmltodictです(完全な情報開示:私はそれを書きました)。これは、あなたのXMLをdict + list + string構造に変換するのに役立ちます。これは、"standard"の後に続きます。それはExpatベースであるため、非常に高速であり、XMLツリー全体をメモリにロードする必要はありません。

あなたがそのデータ構造を持ってたら、JSONにそれをシリアライズすることができます

import xmltodict, json 

o = xmltodict.parse('<e> <a>text</a> <a>text</a> </e>') 
json.dumps(o) # '{"e": {"a": ["text", "text"]}}' 
0

あなたはxmljsonを使用しようとすることができます。そのためのコードは、あなたが要素ツリーオブジェクトは、それが唯一の希望するXMLファイルのどのような部分にアクセスするためのメソッドを提供し、XMLファイルの完全な表現ではないことを理解する必要が

from xmljson import badgerfish as bf 
from xml.etree.ElementTree import fromstring 
s = '''<?xml version="1.0"?> 
<note> 
    <to>Tove</to> 
    <from>Jani</from> 
    <heading>Reminder</heading> 
    <body>Don't forget me this weekend!</body> 
</note>''' 
json.dumps(bf.data(fromstring(s))) 
関連する問題