2012-01-12 9 views
0

私はPythonクラスを作成してXMLを解析し、タグ名とその値を取り出します。これまで私はXML ファイルをクラスに渡し、ElementTreeを使用して解析しています。Pythonを使用して異なるフォーマットのXMLを解析する

必然的に私は、さまざまなXMLフォーマットをクラスに渡すことができます。ファイルだけでなく、おそらくXML文字列やURLからのXMLも渡すことができます。

これについては、どのような方法が最適なのかわかりません。私は、すべてのXML情報を単一の形式、例えば文字列に変換するために、別個のクラスまたはdefを書くことを考えていました。その後、解析用のXML文字列を受け入れるように私の解析クラスを設定してください。

誰かがこの問題を最もうまく解決する方法について提案しているとすれば、これはすばらしいでしょう。

ありがとうございました。

+1

何が出て取得したいですか?異なるフォーマットのXMLファイルはまったく別のものを意味します。 –

+1

"XMLを解析するためのPythonクラスを書く"。本当に?どうして? Pythonには多数のXMLパーサーがあります。なぜ別のものを書きますか? –

+0

@ S.Lott他のものも同様にしています:) – user788462

答えて

3

LXMLを使用してください。文字列、ファイル、またはURLからXMLを解析することができます。

from lxml import etree 
from cStringIO import StringIO 

xml = """<foo><bar/> baz!</foo>""" 

# parse from string 
etree.fromstring(xml) 

# parse from file-like; in this case, StringIO 
s = StringIO(xml) 
etree.parse(s) 

# parse from URL 
etree.parse("http://example.com/somefile.xml") 
+0

ヒープをありがとう、それは私が後にしたものです。 – user788462

3

私はカスタムクラスを構築することによってxmlを解析しようとしているのですか?彼らはBeautiful Soup,lxmlのようなPythonで利用できる多くのxmlパーサーです。 lxmlでxpath式またはcss式を使用できます。

URLからXML応答を解析したり、ファイル

import lxml 
from lxml import etree 
et = etree.parse(your xml file or your url) 
value = et.xpath("xpath expression") 
print value 
+0

返事をありがとう、私は自分の質問をうまく書いているようです。私は私がElementTree(xml)を使用していると述べたので、私は自分のパーサを書いていません。私はちょうどxmlのさまざまなフォーマットを扱うための好ましい方法が何であるかを知りたいと思う。 larsmans、それをうまく覆った。ありがとう。 – user788462

+1

@ user788462:「私は自分の質問をうまく書いたようです。 ** **質問を更新してください。コメントに重要な事実を回答に加えないでください。 –

関連する問題