Created
July 15, 2015 18:44
-
-
Save m-note/8c39318759e9a53d29b7 to your computer and use it in GitHub Desktop.
XMLextractSpeech
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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