节点List相关操作
为方便遍历子节点,lxml将节点list的操作尽可能的与python处理list的方式一样保持一致
创建XML
from lxml import etree
root = etree.Element("root") #创建根节点
root.append(etree.Element("child1")) #创建子节点child1
child2 = etree.SubElement(root, "child2") #创建子节点child2
child3 = etree.SubElement(root, "child3") #创建子节点child3
具体的xml文件结构如下:
<root>
<child1></child1>
<child2></child2>
<child3></child3>
</root>
获取当前节点指定索引处子节点
child = root[0]
print(child.tag) #输出:child1
获取当前节点子节点个数
print(len(root)) #输出:3
获取节点在父节点中的索引
print(root.index(root[1])) #输出:1
子节点遍历
children = list(root)
for child in children:
print(child.tag)
#或
for child in root:
print(child.tag)
子节点插入
root.insert(0, etree.Element("child0"))
节点List操作
start = root[:1]
end = root[-1:]
print(start[0].tag) #输出:child0
print(end[0].tag) #输出:child3
包含子节点判断
#不推荐:
if root:
print("The root element has children") #推荐: 该种方式更能让人读懂是用来判断节点是否包含子节点的
if len(root):
print("The root element has children")
父节点判断
print(root is root[0].getparent()) #输出:True
相邻节点判断
print(root[0] is root[1].getprevious()) #输出:True
print(root[1] is root[0].getnext()) #输出:True
节点判断
print(etree.iselement(root)) #输出:True
root11=''
print(etree.iselement(root11)) #输出:False,因为root11只是变量
子节点移动
for child in root:
print(child.tag) '''输出:
child0
child1
child2
child3
''' root[0] = root[-1] #child3是移动到了index为0的位置,它覆盖了child1
for child in root:
print(child.tag)
'''输出:
child3
child1
child2
'''
子节点拷贝
如果要将元素复制到lxml.etree中的其他位置,请考虑使用python标准库中的copy模块创建一个独立的深度复制
from lxml import etree
from copy import deepcopy root = etree.Element("root") #创建根节点
root.append(etree.Element("child1")) #创建子节点child1
child2 = etree.SubElement(root, "child2") #创建子节点child2
child3 = etree.SubElement(root, "child3") #创建子节点child3 element = etree.Element("neu")
element.append(deepcopy(root[1]))
print(element[0].tag) #输出:child2
print([ c.tag for c in root ]) #输出:['child1', 'child2', 'child3'],原root节点下的子节点没有变化 element01 = etree.Element("neu01")
element01.append(root[1])
print(element01[0].tag) #输出:child2
print([ c.tag for c in root ]) #输出:['child1', 'child3'],原root节点下的子节点有变化,child2不见了
节点List相关操作的更多相关文章
- ztree设置节点checked,选中某节点等相关操作
ztree设置节点checked,选中某节点等相关操作 1.根据id获取树的某个节点: var zTree = $.fn.zTree.getZTreeObj("mytree"); ...
- 二叉树各种相关操作(建立二叉树、前序、中序、后序、求二叉树的深度、查找二叉树节点,层次遍历二叉树等)(C语言版)
将二叉树相关的操作集中在一个实例里,有助于理解有关二叉树的相关操作: 1.定义树的结构体: typedef struct TreeNode{ int data; struct TreeNode *le ...
- 前端学习笔记(zepto或jquery)——对li标签的相关操作(二)
对li标签的相关操作——8种方式获取li标签的第一个元素的内容 1.alert($("ul>li").first().html());2.alert($('ul>li' ...
- 数据结构Java实现04---树及其相关操作
首先什么是树结构? 树是一种描述非线性层次关系的数据结构,树是n个数据结点的集合,这些集结点包含一个根节点,根节点下有着互相不交叉的子集合,这些子集合便是根节点的子树. 树的特点 在一个树结构中,有且 ...
- yum安装_yum命令的相关操作
2017年1月11日, 星期三 yum安装的四种方式 一.默认:从国外下载 二.国内:从阿里获取 http://mirrors.aliyun.com 1. cd /etc/yum.repos.d 2 ...
- Vue-CLI 项目中相关操作
0830总结 Vue-CLI 项目中相关操作 一.前台路由的基本工作流程 目录结构 |vue-proj | |src | | |components | | | |Nav.vue | | |views ...
- web 自动化遇到 shadowDOM 节点你会操作吗?
本文转载自: http://www.lemfix.com/topics/971 近期有同学在做web自动化的时候,发现页面上有些元素,在selenium中无法通过xpath来定位,各种原因找了半天,都 ...
- MySQL数据库(二)--库相关操作、表相关操作(1)、存储引擎、数据类型
一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用 ...
- MySQL数据库(二)——库相关操作、表相关操作(一)、存储引擎、数据类型
库相关操作.表相关操作(一).存储引擎.数据类型 一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字 ...
随机推荐
- faster-rcnn训练自己数据+测试
准备使用faster-rcnn进行检测实验.同时笔者也做了mask-rcnn,yolo-v3,ssd的实验,并进行对比. window下使用faster-rcnn https://blog.csdn ...
- 关于Excel做表小知识记录
关于Excel做表小知识记录 最近使用Excel做了一系列的报表,觉得这是个很神奇的东西哈哈哈,以前我可是一想到Excel就开始头疼的人... 能用代码或者SQL语句解决的问题绝不会愿意留在Exce ...
- Linux查看CPU和内存情况
本文简单介绍在Linux上查看CPU和内存情况和一款系统资源查看工具htop. 查看CPU情况 以下是个人工作会经常使用到的服务器的信息. 查看所有CPU信息 可以通过如下命令查看所有CPU信息: # ...
- RocketMQ 升级到主从切换(DLedger、多副本)实战
目录 1.RocketMQ DLedger 多副本即主从切换核心配置参数详解 2.搭建主从同步环境 3.主从同步集群升级到DLedger 3.1 部署架构 3.2 升级步骤 3.3 验证消息发送与消息 ...
- C++设计考试例题
1. 采用面向对象的方式编写一个通迅录管理程序,通迅录中的信息包括:姓名,公司,联系电话,邮编.要求的操作有:添加一个联系人,列表显示所有联系人.先给出类定义,然后给出类实现.(提示:可以设计二个类, ...
- 利用重写R3环的ReadProcessMemory来防止恶意程序钩取
访问这里---> Windows系统调用中API的三环部分(依据分析重写ReadProcessMemory函数)
- 干货:.net core实现读取appsettings.json配置文件(建议收藏)
看好多人不懂在.NET CORE中如何读取配置文件,我这里分两篇,这一篇介绍怎样通过appsettings.json配置读取文件信息.这里我会教大家两种方式: 第一种直接放到通用类库,那里想调往那调. ...
- 常用类-CSV---OLEDB
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- JS-字符串截取方法slice、substring、substr的区别
一.使用 slice() 截取 1,函数说明 slice() 方法可通过指定的开始和结束位置,提取字符串的某个部分,并以新的字符串返回被提取的部分.语法如下: stringObject.slice(s ...
- Oracle数据库创建只读用户
创建一个只读用户user2,只能查询管理员用户user1下的表,不能增删改. 操作环境:PL/SQL Developer 1.用管理员用户user1登录,创建用户user2.并授权 --创建用户use ...