为方便遍历子节点,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. git上传本地项目到github或者gitlib(两个是一样的)。

    第一步:在github上面创建一个repository   点击create就好了.然后会出现下面的页面. 第三步:打开你所在文件夹,或者是新建的文件夹(用来做仓库的)右键会出现下面  选用git B ...

  2. 阿里云ECS服务器部署HADOOP集群(六):Flume 安装

    本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建. 1 环境介绍 一台阿里云ECS服务器:master 操作系统:CentOS 7.3 Hadoop ...

  3. OS X 下 OpenGL 4.x 环境配置

    配置: OS X 10.10 + CMake 3.2.2 + GLFW 3.1.1 + OpenGL 4.1 + Xcode 6.0 本文主要介绍如何在 OS X 系统下进行环境配置,使得 Xcode ...

  4. [考试反思]1114csp-s模拟测试115:零迟

    最后一次了,允许自己混进榜里吧. 没有心态,原题不会做(真的忘了) T2的搜索没有分. 「 零 · 迟 」:酷刑 只有在最后的时刻才开始意识到,一切的一切都已经晚了. 就在眼前了.没有机会了. 退役, ...

  5. [译]ASP.NET:WebForms vs MVC

    原文示例(VS2012): 1.  Download Simple WebForm demo - 6.7 KB 2.  Download Simple MVC Demo demo - 1.5 MB 介 ...

  6. 【带着canvas去流浪(10)】文字烟花

    目录 一. 文字烟花 二. 动画原理 2.1 像素操作 2.2 烟花生成算法 2.3 计时器 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址 ...

  7. Java操作数据库——在JDBC里使用事务

    Java操作数据库——在JDBC里使用事务 摘要:本文主要学习了如何在JDBC里使用事务. 使用Connection的事务控制方法 当JDBC程序向数据库获得一个Connection对象时,默认情况下 ...

  8. javaWeb核心技术第九篇之JSP

    JSP:全名是Java Server Pages,它是建立在Servlet规范之上的动态网页开发技术.在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示 ...

  9. html文本框默认值刷新后无法继续显示解决方法

    转载于:https://blog.csdn.net/yufeitong/article/details/8485129 有这种情况,文本框输入值后,再次刷新默认值就无法显示了 原始html代码: &l ...

  10. 常用adb命令总结

    前言 很早就想整理一下自己平时常用的一些adb命令,不仅为了便于以后查找,而且整理的过程自己又重新复习了一遍,但是当我开始在度娘一搜的时候,发现很多人已经写的非常详细了,尤其是当我发现了这篇adb概括 ...