Python 3.x 使用Python搜索XML文件中字段的值

Python 3.x 使用Python搜索XML文件中字段的值,python-3.x,xml,parsing,Python 3.x,Xml,Parsing,我尝试使用以下代码在XML文件中查找字段的值 从xml.etree导入ElementTree作为ET 文件名=('TEST.xml') root=ET.parse(文件名) root1=root.getroot() field=root1.findall('.//ALTERNATE_COMPANY_NAME')。文本 这将返回以下错误 field=root1.findall('.//ALTERNATE_COMPANY_NAME')。文本 AttributeError:“列表”对象没有属性“文本

我尝试使用以下代码在XML文件中查找字段的值

从xml.etree导入ElementTree作为ET
文件名=('TEST.xml')
root=ET.parse(文件名)
root1=root.getroot()
field=root1.findall('.//ALTERNATE_COMPANY_NAME')。文本
这将返回以下错误

field=root1.findall('.//ALTERNATE_COMPANY_NAME')。文本
AttributeError:“列表”对象没有属性“文本”
字段ALTERNATE_COMPANY_NAME在xml文件中仅出现一次

<Descriptive>
    <ALTERNATE_COMPANY_NAME>TEST_TEST</ALTERNATE_COMPANY_NAME>
    <CNTRY>US</CNTRY>
    <COUNTRY_CODE>US</COUNTRY_CODE>
</Descriptive>

测试
美国
美国

.findall
返回一个列表,即使它只是一个项目,因此请使用以下任一项:

从xml.etree导入ElementTree作为ET
xml=“”
测试
美国
美国
'''
root=ET.fromstring(xml)
#取消引用列表,如果找到零则失败,不会打印多个
field=root.findall('.//ALTERNATE_COMPANY_NAME')[0]。text
打印(字段)
#迭代列表,打印所有找到的
对于root.findall(“.//备用公司名称”)中的字段:
打印(field.text)
#打印一个,如果找不到则失败
field=root.find('.//ALTERNATE_COMPANY_NAME')。文本
打印(字段)
输出:

TEST\u测试
测试
测试

我运行了您建议的代码,但它返回了以下错误:AttributeError:“NoneType”对象没有属性“text”@SeánDempsey您没有运行我的确切代码,因为它可以工作<如果代码没有找到任何内容,则返回code>None。text无法处理
None
,就像它无法处理
list
一样。好的,当运行确切的代码时,我看到:File“”,第None-xml.etree.ElementTree.ParseError行:格式不正确(无效令牌)这是因为我的文件的位置是从一个目录派生的,所以我在代码中所做的是从这个目录中获取xml文件,然后使用它:filename=get_latest_file_in_folder(download_dir)root=ET.fromstring(filename)@SeánDempsey错误消息意味着您拥有无效的xml<代码>文件名不是XML。如果有文件名,请使用
parse
;如果字符串中有XML,请使用
fromstring