3

このコードは、インターネットのどこかで入手し、編集しました。

ディレクトリから XML ファイルをロードするにはどうすればよいですか? これを行う方法はありますか?

from elementtree import ElementTree as et
# Load the xml content from a string
content = et.fromstring("C:\DATA\US_Patent_Data\2012\ipgb20120103_wk01\ipgb20120103.xml")


# Get the person or use the .findall method to get all
# people if there's more than person
applicant = content.find("applicant")
last_name = applicant.find("addressbook/last-name")
first_name = applicant.find("addressbook/first-name")

# Get the persons address
address = addressbook.find("address")
street = address.find("street")
city= address.find("city")
state =  address.find("state")
postcode = address.find("postcode")
country = address.find("country")

# Print output
print "sequence: " + applicant.attrib.get('sequence')
print "first name: " + first_name.text
print "last name: " + last_name.text
print "street: " + street.text
print "city: " + city.text
print "state: " + state.text
print "postcode: " + postcode.text
print "country: " + country.text

私はこれが私が得たものであるプログラムを実行しました。一部コピペしましたが…

  File "C:\Python27\lib\site-packages\elementtree\ElementTree.py", line 1292, in feed
self._parser.Parse(data, 0)

ExpatError: 整形式ではありません (無効なトークン): 行 1、列 2

4

1 に答える 1

2

fromstring関数は、文字列から xml データを読み取るためのものです。

ファイルから xml データを読み取るには、parse. elementtree を使用した xml の解析に関するドキュメントを参照してください。

import xml.etree.ElementTree as ET
tree = ET.parse("C:\DATA\US_Patent_Data\2012\ipgb20120103_wk01\ipgb20120103.xml")
root = tree.getroot()

UPD: xml には複数のルートがあるため、整形式ではないようです。単一のルート要素を追加してみてください:

with open('ipgb20120103.xml', 'r') as f:
    xml_string = "<root>%s</root>" % f.read()

root = ET.fromstring(xml_string)
于 2013-04-07T08:49:01.623 に答える