-2

XMLファイルにこのような詳細があります

<note>
<id>51</id>
<Name>Jani</Name>
<city>Frankfurt</city>
<IQ>Intelligent</IQ>
</note>

<note>
<id>71</id>
<Name>Peter</Name>
<city>Paris</city>
<IQ>Average</IQ>
</note>

<note>
<id>81</id>
<Name>Asho</Name>
<city>Paris</city>
<IQ>Intelligent</IQ>
</note>

これらの詳細を考慮して、ユーザーがファイル内のすべての人を検索できるようにする検索エンジンを実装したいと考えて'Intelligent'います。

Pythonでそれを行うための最良の方法を教えてください。

4

2 に答える 2

1

lxmlと XPathを使用します。

from StringIO import StringIO
from lxml import etree

xml = """<root>
<note>
<id>51</id>
<Name>Jani</Name>
<city>Frankfurt</city>
<IQ>Intelligent</IQ>
</note>

<note>
<id>71</id>
<Name>Peter</Name>
<city>Paris</city>
<IQ>Average</IQ>
</note>

<note>
<id>81</id>
<Name>Asho</Name>
<city>Paris</city>
<IQ>Intelligent</IQ>
</note>

</root>"""

tree = etree.parse(StringIO.StringIO(xml))
for note in tree.xpath("//note[IQ='Intelligent']"):
    print note.getchildren()[1].tag + "=" + note.getchildren()[1].text

これは以下を出力します:

Name=Jani
Name=Asho
于 2013-06-14T09:28:38.300 に答える
0

ファイルが小さい場合、ライブラリ xml.mindom を使用すると、ファイルが大きい場合にデータ構造を簡単に変換できます xml.etree.cElementTree をお勧めします

または、必要に応じてファイルを事前解析することもできます。たとえば、関連データを含むタプル/リストを持つ dict (またはすべての数値 ID が使用されている場合はリスト) を作成し、次のような ID を持つリストを含む名前、都市、および IQ dict を作成します。

note[51] = (51,'ジャニ', 'フランクフルト', 'インテリジェント')

iq_dict['インテリジェント'] = (81, 51)

等..

于 2013-06-14T09:22:21.500 に答える