Skip to content

Instantly share code, notes, and snippets.

@m-note
Created July 15, 2015 18:44
Show Gist options
  • Save m-note/8c39318759e9a53d29b7 to your computer and use it in GitHub Desktop.
Save m-note/8c39318759e9a53d29b7 to your computer and use it in GitHub Desktop.
XMLextractSpeech
XMLcontent = DietSearch(search)
from lxml import etree
def XMLextractSpeech(XMLcontent):
root = etree.fromstring(XMLcontent) # 文字列からの読み込み
##第二階層の情報を取得##
numberOfRecords = root.find('numberOfRecords').text #リクエストされた検索条件に該当する総件数
numberOfReturn = root.find('numberOfReturn').text #当該リクエストで返戻した件数
startRecord = root.find('startRecord').text #当該リクエストの返戻結果に含まれる最初のレコードの総結果件数の中での出現位置
try: #次開始位置はない場合もあるので
nextRecordPosition = 0
nextRecordPosition = root.find('nextRecordPosition').text #総結果件数が今回の返戻件数を超え、続きを取得したい場合に、次に指定すべき開始位置。次の開始レコードが存在しない場合は、タグも含め表示されない
except AttributeError:
nextRecordPosition = 0 #構文法的には文が必要だが、コードとしては何も実行したくない場合のプレースホルダとして用いる
##第三階層以降の情報(実際の発言など)を取得する## --> numberOfReturnと同じことみたい
#numRecords = 0 #次のfor loopで調べるrecordの数
#for child in root[4]:
# numRecords += 1
m=4 #<nextRecordPosition>のあるなしで、どこから始めるかが変わるみたい
if nextRecordPosition == 0:
m=3
extracted = []
for i in range(int(numberOfReturn)):
temp_extracted = []
for neighbor in root[m][i].iter(): # records(第二階層5つ目の要素)に入っているrecordうち何番目かを2つ目の[]が指定している
temp_extracted.append([neighbor.tag, neighbor.text])
extracted.append(temp_extracted)
return ([nextRecordPosition, extracted])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment