0
XML 파일에서 특정 태그의 내용을 추출하려고합니다.elementtree : xml 문서의 특정 태그 내용 가져 오기
샘플 XML :
<facts>
<fact>
<name>crash</name>
<full_name>Crash</full_name>
<variables>
<variable>
<name>id</name>
<proper_name>Crash Instance</proper_name>
<type>INT</type>
<interpretation>key</interpretation>
</variable>
<variable>
<name>accident_key</name>
<proper_name>Case Identifier</proper_name>
<interpretation>string</interpretation>
<type>CHAR(9)</type>
</variable>
<variable>
<name>accident_year</name>
<proper_name>Crash Year</proper_name>
<interpretation>dim</interpretation>
<type>INT</type>
</variable>
</variables>
</fact>
<fact>
<name>vehicle</name>
<full_name>Vehicle</full_name>
<variables>
<variable>
<name>id</name>
<proper_name>Vehicle Instance</proper_name>
<type>INT</type>
</variable>
<variable>
<name>crash_id</name>
<proper_name>Crash Instance</proper_name>
<type>INT</type>
</variable>
</variables>
</fact>
</facts>
내가 만 크래시 사실, 노드에서 태그의 내용을 모두 끌어합니다.
여기 내 코드가 있습니다.
def header(filename, fact):
lst = []
tree = ET.parse(filename) #read in the XML
for fact in tree.iter(tag = 'fact'):
factname = fact.find('name').text
if factname == fact: #choose the fact to pull from
for var in fact.iter(tag = 'variable'):
name = var.find('name').text
lst.append(name)
return lst #return a list of all the <name> tags from the Crash fact
newlst = header('schema.xml','crash')
내 출력 newlst는 크래시 사실의 모든 태그 목록이어야합니다. 그러나 그것은 계속 비어있게됩니다.
이상하게도, 그것이 내가 하드 코드 모든 경우 올바른 출력을 반환 (및 기능 제거) : 함수에서
lst = []
tree = ET.parse('schema.xml')
for fact in tree.iter(tag = 'fact'):
factname = fact.find('name').text
if factname == 'crash':
for var in fact.iter(tag = 'variable'):
name = var.find('name').text
lst.append(name)
print(lst)
Output: ['id',
'accident_key',
'accident_year']
나는 바보 같은 실수를하고 있다는 것을 알고있었습니다 ... 감사합니다! – ale19