我想检索特定的标记属性。
file
标记包含子标记filename
,基于此字段,我想决定是否应使用modification
换句话说:如果filename
值包含.tar
,我想打印修改时间
在下面的例子中,我希望2020-07-15T06:41:12.000Z
会被打印出来
我尝试了两个小时,但没有成功,所以我真的很感谢任何能让我更接近解决方案的提示。
下面是代码,但没有任何内容被打印或添加到dates
列表中:
import xml.etree.ElementTree as ET
tree = ET.parse(r"C:\path\to\file\logs.xml")
root = tree.getroot()
dates = []
for filetag in root.findall('.//{*}file'):
for filename in filetag.findall('../{*}filename'):
if ".tar" in filename.attrib['value']:
print(filename)
dates.append(filename)
以下是XML文档:
<?xml version="1.0" encoding="UTF-8"?>
<session xmlns="http://winscp.net/schema/session/1.0" name="user@11.11.111.11" start="2020-07-22T10:01:12.939Z">
<ls>
<destination value="/folder/processing" />
<files>
<file>
<filename value="." />
<type value="d" />
<modification value="2020-07-22T08:57:28.000Z" />
<permissions value="rwxrwsrwx" />
<owner value="1000130000" />
<group value="0" />
</file>
<file>
<filename value=".." />
<type value="d" />
<modification value="2020-07-22T08:51:15.000Z" />
<permissions value="rwxrwxrwx" />
<owner value="1000130000" />
<group value="0" />
</file>
<file>
<filename value="package_tsp200715092001_20200715074120.tar" />
<type value="-" />
<size value="4014536192" />
<modification value="2020-07-15T06:41:12.000Z" />
<permissions value="rw-rw-rw-" />
<owner value="1005" />
<group value="1005" />
</file>
<file>
<filename value="package_tsp200715092001_20200715074120" />
<type value="d" />
<modification value="2020-07-15T06:41:59.000Z" />
<permissions value="rwxr-Sr--" />
<owner value="1000130000" />
<group value="0" />
</file>
</files>
<result success="true" />
</ls>
</session>
由于
..
,这将在file
元素的父元素中查找filename
(即,作为file
的兄弟元素)。它应该是一个.
此外,在Python3.8中添加了名称空间通配符。您没有指明正在使用哪个Python版本,因此这可能也是一个问题
无论如何,您最好“正确地”使用名称空间,而不是寻找快捷方式,这有点冗长,但几乎不难
以下是一行:
输出
相关问题 更多 >
编程相关推荐