为方便遍历子节点,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相关操作的更多相关文章

  1. ztree设置节点checked,选中某节点等相关操作

    ztree设置节点checked,选中某节点等相关操作 1.根据id获取树的某个节点: var zTree = $.fn.zTree.getZTreeObj("mytree"); ...

  2. 二叉树各种相关操作(建立二叉树、前序、中序、后序、求二叉树的深度、查找二叉树节点,层次遍历二叉树等)(C语言版)

    将二叉树相关的操作集中在一个实例里,有助于理解有关二叉树的相关操作: 1.定义树的结构体: typedef struct TreeNode{ int data; struct TreeNode *le ...

  3. 前端学习笔记(zepto或jquery)——对li标签的相关操作(二)

    对li标签的相关操作——8种方式获取li标签的第一个元素的内容 1.alert($("ul>li").first().html());2.alert($('ul>li' ...

  4. 数据结构Java实现04---树及其相关操作

    首先什么是树结构? 树是一种描述非线性层次关系的数据结构,树是n个数据结点的集合,这些集结点包含一个根节点,根节点下有着互相不交叉的子集合,这些子集合便是根节点的子树. 树的特点 在一个树结构中,有且 ...

  5. yum安装_yum命令的相关操作

    2017年1月11日, 星期三 yum安装的四种方式 一.默认:从国外下载 二.国内:从阿里获取  http://mirrors.aliyun.com 1. cd /etc/yum.repos.d 2 ...

  6. Vue-CLI 项目中相关操作

    0830总结 Vue-CLI 项目中相关操作 一.前台路由的基本工作流程 目录结构 |vue-proj | |src | | |components | | | |Nav.vue | | |views ...

  7. web 自动化遇到 shadowDOM 节点你会操作吗?

    本文转载自: http://www.lemfix.com/topics/971 近期有同学在做web自动化的时候,发现页面上有些元素,在selenium中无法通过xpath来定位,各种原因找了半天,都 ...

  8. MySQL数据库(二)--库相关操作、表相关操作(1)、存储引擎、数据类型

    一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用 ...

  9. MySQL数据库(二)——库相关操作、表相关操作(一)、存储引擎、数据类型

    库相关操作.表相关操作(一).存储引擎.数据类型 一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字 ...

随机推荐

  1. 使用gitolite搭建Git服务器

    使用gitolite搭建Git服务器 运行环境 Ubuntu18.04 gitolite 搭建过程 安装好Ubuntu18.04系统 更新系统 sudo apt update sudo apt upg ...

  2. Appium新版本遇到的问题,不能通过 name 去定位元素抛 Message: Locator Strategy 'name' is not supported for this session

    环境: 1.Appium: 1.15.1 2.Python: 3.7.0 3.Selenium: 3.141.0 4.IDE: Pycharm 5.PC:Windows 10 问题:在 Pycharm ...

  3. 11 K-Means 原理及案例

    11 K-Means 原理及案例 非监督学习 unsupervised learning (非监督学习) ,只有特征值,没有目标值 聚类: 主要方法 - k-means (K - 需要分成的类别数) ...

  4. ubuntu 查看端口被占用并删除端口

    做网络的同学,估计会经常用到这个功能,这里就做一个记录吧. 首先查看特定端口是占用了: sudo netstat -nplt 其次要删除特定端口并查看: kill -9 pid_num sudo ne ...

  5. 阿里面试官:字符串在JVM中如何存放?90%的人就真的只回答在哪里存放

    目录: 一道面试题的引出 案例分析 intern 源码分析 总结 1. 一道面试题的引出 在面试BAT这种一线大厂时,如果面试官问道:字符串在 JVM 中如何存放?大多数人能顺利的给出如下答案: 字符 ...

  6. 体感在js中的调用

    体感技术,在于人们可以很直接地使用肢体动作,与周边的装置或环境互动,而无需使用任何复杂的控制设备,便可让人们身临其境地与内容做互动. 体感分为三大类: 惯性感测:主要是以惯性传感器为主,例如用重力传感 ...

  7. JDK1.8源码分析02之阅读源码顺序

    序言:阅读JDK源码应该从何开始,有计划,有步骤的深入学习呢? 下面就分享一篇比较好的学习源码顺序的文章,给了我们再阅读源码时,一个指导性的标志,而不会迷失方向. 很多java开发的小伙伴都会阅读jd ...

  8. JQuery iframe宽高度自适应浏览器窗口大小的解决方法

    iframe宽高度自适应浏览器窗口大小的解决方法   by:授客 QQ:1033553122 1.   测试环境 JQuery-3.2.1.min.js 下载地址: https://gitee.com ...

  9. [转]Introduction - Run Excel Macro using VBScript

    本文转自:https://wellsr.com/vba/2015/excel/run-macro-without-opening-excel-using-vbscript/ Have you ever ...

  10. Cesium专栏-空间分析之地形等高线(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...