は、私はいくつかのガイドを参照しているが、私はまだそれが難しいこの(Pythonの初心者くさい)のまわりで私の頭をラップするために見つけることだ:ベストプラクティス - XML APIレスポンスの解析 - Pythonの3
- /docs.python.org /3.7/library/xml.etree.elementtree.html
- /effbot.org/zone/element-xpath.htm
意図は、郵便番号のテキスト値を取得することです。
from xml.etree import ElementTree as ET
tree = ET.parse(<destination_of_xml>.xml')
for elem in tree.iterfind('/response/results/result/address/zipcode'):
print(elem.tag, elem.text)
----------------------------------------------------------------------
output:
zipcode {90292}
zipcode {90292}
...
は何ですか:ここ
/SearchResults:searchresults[@xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance"]/response/results/result/address/zipcode/text()
ローカルファイルから働いているものの例です:しかし、私は前とガイドを参照してからこれを行っていない、私は次のXPathの出力が欲しいですこのインスタンスで郵便番号の値を取得し、将来のスキーマ変更を考慮する(つまり、要素zipcodeを見つけるまでXMLを反復する)良い方法ですか?これには良い解決策がありますか?
私は本当に一般的な答えがあると疑います。郵便番号には必ず「郵便番号」というタグが付いているわけではありません。正当な5桁の郵便番号の値を探すことができますが、その後は長い郵便番号のバージョンがあることを注意しなければなりません。それ以外にも、ビジネスのエントリに2つ以上の郵便番号が含まれることがあります。どちらを受け入れるのですか?または私はあなたの質問のポイントを見逃していますか? –
まあ、この例では、私はこのXMLソースから、郵便番号は常に '郵便番号'というタグを持つと仮定しています。しかし、必ずしも/ response/results/result/address/zipcodeの下に入れ子になっているとは限りません。例えば、ホストが何かを更新し、/ response/results/result/zipcodesの下に郵便番号があります。 –
回答が要件を満たしている場合は、「受け入れ」と記入してください。 –