- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我无法弄清楚为什么会收到以下错误
AttributeError: 'NoneType' object has no attribute 'text'
我正在尝试使用 Python 2.7 导入 XML 文件。下面是我的 XML 文件的样子。
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE dblp SYSTEM "file.dtd">
<top>
<blue key="2343998978">
<animal>lion</animal>
<animal>seal</animal>
<state>california</state>
<zoo>san diego</zoo>
<year>2015</year>
</blue>
<red key="9383893838739">
<elem_a>jennifer</elem_a>
<elem_a>paul</elem_a>
<elem_a>carl</elem_a>
<elem_b>kansas</elem_b>
<elem_d>australia</elem_d>
</red>
<yellow key="83963277272">
<car>chevy</car>
<car>dodge</car>
<cap>baseball</cap>
<cat>tabby</cat>
</yellow>
<red key="9383893838739">
<elem_a>greg</elem_a>
<elem_a>chris</elem_a>
<elem_a>john</elem_a>
<elem_b>arkansas</elem_b>
<elem_c>ice cream</elem_c>
</red>
<yellow key="84748346734">
<car>toyota</car>
<car>honda</car>
<cap>football</cap>
</yellow>
</top>
我是 Python 的新手,但创建了下面的脚本来导入上面的 XML 文件,这就是我收到上面的错误的时候。下面是我的代码。
import xml.etree.ElementTree as ET
myfile = 'C:/Users/user1/Desktop/file.xml'
tree = ET.parse(myfile)
root = tree.getroot()
for x in root.findall('blue'):
animal = x.find('animal').text
key1 = x.attrib['key']
state = x.find('state').text
zoo = x.find('zoo').text
year = x.find('year').text
print animal, key1, state, zoo, year
for y in root.findall('red'):
elem_a = y.find('elem_a').text
key2 = y.attrib['key']
elem_b = y.find('elem_b').text
elem_c = y.find('elem_c').text
elem_d = y.find('elem_d').text
print elem_a, key2, elem_b, elem_c, elem_d
for z in root.findall('yellow'):
car = z.find('car').text
key3 = z.attrib['key']
cap = z.find('cap').text
cat = z.find('cat').text
print car, key3, cap, cat
在 XML 文件中有三种主要元素类型:蓝色、红色和黄色。某些父元素存在的特定子元素的问题之一是其他元素不存在。例如,在上面的示例 XML 文件中,一个“黄色”元素具有三个子元素,包括“汽车”、“猫”和“帽子”,但并非每个“黄色”元素都具有所有三个子元素。在下面的 XML 中,第一个“黄色”元素有“猫”子节点,第二个“黄色”元素没有“猫”子元素,但在完整的 XML 文件中,“黄色”元素可以有任何一个,两个或“cat”、“cap”和“car”子元素中的三个。我知道这是导致错误的原因,但我不知道如何解决。有没有人对如何解决此错误有任何想法或提示?谢谢。
最佳答案
您可以遍历树,for x in root:
遍历根标记 blue、red 和 yellow,然后遍历每个 color 标记 你可以为 子树 再次循环。
x.tag
元素的标签名。x.attrib
具有元素属性的映射。x.getchildren()
是一个元素的所有子元素的列表。x.text
为元素的文本内容。一个例子:
import xml.etree.ElementTree as ET
my_file = 'C:/Users/user1/Desktop/file.xml'
tree = ET.parse(my_file)
root = tree.getroot()
def print_subtree(subtree):
for y in subtree:
print "\t", y.tag, ":", y.text
for x in root:
print x.tag, x.attrib
print_subtree(x.getchildren())
这适用于两层树,因为 n 层树递归是必要的。
关于Python XML 属性错误 : 'NoneType' object has no attribute 'text' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40348944/
我目前正在尝试定义函数,但遇到了这个错误。我只是想做一个简单的函数,用户输入 2 个数字,然后将它们相乘。也请尽可能简单地解释我做错了什么。 (我是菜鸟) def userinput(): w
使用IPtools python 包我试图查看 IP 地址是否在特定范围内。这是我的代码: for line in g: org= line.split("|")[0] ranges
输入 [['1','2','3'],['a','b','c'],['6','7','8'],['e','f','g']] 输出应该是: 1, 2, 3a, b, c6, 7, 8e, f, g Cod
我目前正在使用 lambda 使 tkinter 按钮依次执行两件事: def classManip(): cManip = tk.Toplevel() cManip.title
我正在学习Python,作为练习,我编写了一些代码来查找用户定义函数的导数。代码如下。 def fx(value, function): x = value return eval(f
使用 Django。我有以下模型: class Postagem(models.Model): id = models.AutoField(primary_key=True, editable=Fal
我正在尝试为给定的数据集选择重要的特征(或者至少了解哪些特征解释更多的变异性)。为此,我使用 ExtraTreesClassifier 和 GradientBoostingRegressor - 然后
刚刚获得了SDXL模型的访问权限,希望为即将发布的版本进行测试...不幸的是,我们当前用于我们服务的代码似乎不能与稳定ai/稳定-扩散-xl-base-0.9一起工作,我不完全确定SDXL有什么不同,
通常,当我尝试使用BeautifulSoup解析网页时,BeautifulSoup函数会得到NONE结果,否则就会引发AttributeError。。以下是一些独立的(即,由于数据是硬编码的,不需要访
通常,当我尝试使用BeautifulSoup解析网页时,BeautifulSoup函数会得到NONE结果,否则就会引发AttributeError。。以下是一些独立的(即,由于数据是硬编码的,不需要访
我想遍历可迭代列表,但要求某些元素的类型可以是 None。 这看起来像这样: none_list = [None, [0, 1]] for x, y in none_list: print("
我得到object is not subscriptable在非空查询结果上。当我打印时 c.fetchone()它打印了正确的结果,但是当我检查类型时它显示 import sqlite3 conn
我在第 15 行收到此错误,但我不明白为什么。有任何想法吗?看来属性已经明确定义了,所以我完全不知所措。任何帮助将非常感激。AttributeError:“NoneType”对象没有属性“Sheets
我尝试对 Chrome WebDriver 进行子类化以包含一些初始化和清理代码,但随后 Python 提示创建的对象设置为 None: import glob import selenium imp
这个问题已经有答案了: Why do I get AttributeError: 'NoneType' object has no attribute 'something'? (10 个回答) 已关
这个问题已经有答案了: Why does the print function return None? (1 个回答) 已关闭 6 年前。 我对 Python 还很陌生。我正在制作一个生成器,可以为
我正在尝试比较两个表( table_a 和 table_b )并减去 table_a 的最后一列从table_b的最后一列开始。但是,table_a 包含一个额外的行,导致我得到 NoneType错误
当“文件名”是一个存在的文件时,这段代码运行良好……但是当它不存在时……我不断收到同样的错误:TypeError: 'NoneType' 对象不可迭代 (Errno 2) 尽管我从不迭代任何东西,除非
我在下面的代码中收到“NoneType”对象不可迭代的 TypeError。下面的代码用于使用 pyautogui 滚动 digits 文件夹中的 10 张图像(命名为 0 到 9,以图像中的 # 命
我有一段代码表现得很奇怪。 一开始,我导入了一个模块,它是 C 库的 python 绑定(bind)。 try: import pyccn except: print "ERROR:
我是一名优秀的程序员,十分优秀!