我很难使用python脚本访问XML中的值。您如何在此处访问Value1-Value4?我已经尝试过使用findall()函数,但是什么也没有返回。
tree =ET.parse('example.xml')
root=tree.getroot()
for child in root.findall("row"):
print(child)
XML如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<entities xmlns="http://www.example.com">
<entity id="Title" dataDate="2018-08-31">
<spreadsheetContainer name="ContainerA">
<row>
<col name="A">Value1</col>
<col name="B">Value2</col>
<col name="C">Value3</col>
<col name="D">Value4</col>
</row>
</spreadsheetContainer>
</entity>
</entities>
答案 0 :(得分:0)
第一点:您要查找的标签不是“行”,而是“ col”。
第二点:这些标记不是根节点的直接子代,它们嵌套在实体->电子表格容器->行中,因此您需要使用XPath表达式(或手动遍历dom,但是xpath会这样做)你...)
第三点:您的XML具有命名空间(请参见root标记中的xmlns="http://www.example.com
属性),因此您需要对xpath表达式(或实际上是任何标记查找)进行命名空间。
所以您想要的代码实际上是:
from lxml.etree import ElementTree as ET
namespace = "{http://www.example.com}"
path = "{0}entity/{0}spreadsheetContainer/{0}row/{0}col".format(namespace)
root = ET.parse("example.xml")
values = [col.text for col in root.findall(path)]