我有一个看起来像这样的xml字符串:
我正在使用元素树库
<?xml version="1.0" encoding="UTF-8"?>
<GetCategoriesResponse xmlns="urn:ebay:apis:eBLBaseComponents"><CategoryArray><Category><WantedParm1>true</WantedParm1><UnwantedParm1>true</UnwantedParm1><WantedParm2>20081</WantedParm2></Category></CategoryArray></GetCategoriesResponse>
Run Code Online (Sandbox Code Playgroud)
我想获取“类别节点”的一些值,我们将其称为“通缉参数1和2”。但是,我收到AttributeError的原因可能是因为我编写的代码无法找到“类别”项的子节点。
AttributeError:'NoneType'对象没有属性'text'。
import xml.etree.ElementTree as ET
XML = #Above Code in String
tree = ET.ElementTree(ET.fromstring(XML))
root = tree.getroot()
for Category in root[0]:
one = Category.find("WantedParm1").text
two = Category.find("WantedParm2").text
print(one, two)
Run Code Online (Sandbox Code Playgroud)
XML元素位于默认名称空间中,urn:ebay:apis:eBLBaseComponents因此所有标记都以名称空间的完整URI开头。
更改find()参数以包含URI应该可以。
import xml.etree.ElementTree as ET
XML = #Above Code in String
tree = ET.ElementTree(ET.fromstring(XML))
root = tree.getroot()
for Category in root[0]:
one = Category.find("{urn:ebay:apis:eBLBaseComponents}WantedParm1").text
two = Category.find("{urn:ebay:apis:eBLBaseComponents}WantedParm2").text
print(one, two)
Run Code Online (Sandbox Code Playgroud)
您可以在此处或此堆栈溢出文章中找到有关处理名称空间的更多信息。