python - 如何获取 lxml.etree._ElementTree 对象的父路径
问题描述
使用 lxml 库我已经客观化了一些元素(下面的示例代码)
config = objectify.Element("config")
gui = objectify.Element("gui")
color = objectify.Element("color")
gui.append(color)
config.append(gui)
config.gui.color.active = "red"
config.gui.color.readonly = "black"
config.gui.color.match = "grey"
结果是以下结构
config
config.gui
config.gui.color
config.gui.color.active
config.gui.color.readonly
config.gui.color.match
我可以获得每个对象的完整路径
for element in config.iter():
print(element.getroottree().getpath(element))
路径元素由斜杠分隔,但这不是问题。我不知道如何仅获取路径的父部分,以便可以使用 setattr 更改给定元素的值
例如对于元素
config.gui.color.active
我想输入命令
setattr(config.gui.color, 'active', 'something')
但不知道如何获得完整路径的“父”部分。
解决方案
getparent
您可以使用该函数获取元素的父级。
for element in config.iter():
print("path:", element.getroottree().getpath(element))
if element.getparent() is not None:
print("parent-path:", element.getroottree().getpath(element.getparent()))
您也可以只删除元素路径本身的最后一部分。
for element in config.iter():
path = element.getroottree().getpath(element)
print("path:", path)
parts = path.split("/")
parent_path = "/".join(parts[:-1])
print("parent-path:", parent_path)
推荐阅读
- python - 在 pyinstaller 包中包含 caffee prototxt 文件
- r - 如何用 NA 替换 R 中所有长于 4 位的值?
- javascript - 拆分块需要将所有文件加载到索引文件中
- php - “core_user_get_users_by_field”函数在 Moodle API 和 PHP 中没有返回任何值
- javascript - Jquery对yii2动态形式的每个文本输入加1
- java - 如何在 for 循环中启动多个线程?
- javascript - Array.forEach() 中声明的匿名函数不能在 JavaScript 中返回值吗?请参阅下面的代码以获得更好的图片
- reactjs - React 钩子中的重新渲染问题
- python - 如何在熊猫散景中使面积图覆盖其下方的所有区域?
- microsoft-graph-api - SPFx REACT Web 部件中的 Microsoft Graph 工具包