节点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)数据库命名规范 可以由字母.数字 ...
随机推荐
- SQL索引碎片的产生,处理过程。
本文参考 https://www.cnblogs.com/CareySon/archive/2011/12/22/2297568.html https://www.jb51.net/softjc/12 ...
- Windows 10 神州网信版
一.版本介绍:官网链接:http://document.cmgos.com/release_notes/release_notes_V0_H 下载链接:请自行百度Windows 10 神州网信政府版( ...
- 统计学习方法与Python实现(三)——朴素贝叶斯法
统计学习方法与Python实现(三)——朴素贝叶斯法 iwehdio的博客园:https://www.cnblogs.com/iwehdio/ 1.定义 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设 ...
- 13. java String类
一.字符串类 /* java.lang.String类代表字符串 程序中所有的双引号字符串,都是String类的对象.就算没有new 字符串中的内容,永不变:不可变 字符串效果上相当于是char[]字 ...
- 【使用篇二】SpringBoot使用Druid作为数据源(19)
Druid是一个关系型数据库连接池,它是阿里巴巴的一个开源项目.Druid支持所有JDBC兼容数据库,包括了Oracle.MySQL.PostgreSQL.SQL Server.H2等.Druid在监 ...
- ReactNative: 使用标签栏组件TabBarIOS组件
一.简介 标签栏Tab的作用对于应用程序那是不言而喻的,它是应用程序中除了导航栏组件外的又一个核心组件,使用它可以实现页面的切换.RN提供了一个TabBarIOS组件来完成页面的切换(视图或者路由), ...
- windows7使用vhd虚拟磁盘
操作系统 : windows7_x64 创建vhd 磁盘管理 --> 操作 --> 创建vhd 挂载vhd 脚本: rem 挂载VHD @echo off (echo select vdi ...
- Mysql的旧版本下载地址
直接进入:http://downloads.mysql.com/archives/community/
- C/C++ 中 `printf` 格式化
作为强类型静态语言,类型不仅规定了可以对数据进行的操作,还决定了应该怎样在 printf 中输出. printf 的签名是: int printf ( const char * format, ... ...
- C#属性方法 构造函数(不知道自己理解的对不对)
using System; namespace test { class Program { static void Main(string[] args) { Cat kitty = new Cat ...