热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python中dom是什么意思_Python操作DOM(待更)

XML简介xml.etree.ElementTree模块实现了一个简单高效的API,用于解析和创建XML数据。XML是一种固有的分层数据格式,最自然的表

XML 简介

xml.etree.ElementTree 模块实现了一个简单高效的API,用于解析和创建XML数据。

XML是一种固有的分层数据格式,最自然的表示方法是使用树。ET(xml.etree.ElementTree ) 有两个类: ElementTree 将整个XML文档表示为一个树, Element 表示该树中的单个节点。与整个文档的交互(读写文件)通常在 ElementTree 级别完成。与单个XML元素及其子元素的交互是在 Element 级别完成的。

解析XML

1

2008

141100

4

2011

59900

68

2011

13600

可以通过从文件中读取来导入此数据:

import xml.etree.ElementTree as ET

tree = ET.parse('country_data.xml')

root = tree.getroot()

或直接从字符串中解析:

root = ET.fromstring(country_data_as_string)

fromstring() 将XML从字符串直接解析为 Element ,该元素是已解析树的根元素。其他解析函数可能会创建一个 ElementTree 。更多信息请查阅文档。

作为 Element , root 具有标签和属性字典:

root.tag, root.attrib

('data', {})

还有可以迭代的子节点:

for child in root:

print(child.tag, child.attrib)

country {'name': 'Liechtenstein'}

country {'name': 'Singapore'}

country {'name': 'Panama'}

子级是可以嵌套的,我们可以通过索引访问特定的子级节点:

root[0][1].text

'2008'

Element

Element实例元素的长度是其子元素的数量。那意味着如果你要检查元素是否真的为空,则应同时检查它的长度和它的text属性。元素标签,属性名称和属性值可以是字节或字符串。

Element 是一个灵活的容器对象,旨在将分层数据结构存储在内存中。可以说是 list 和 dict 之间的交叉。每个元素都有许多与之关联的属性:

'tag': 元素名称

'attrib': (可选)存储元素属性的Python字典

'text': 一个包含元素的文本内容的字符串,即第一个子元素之前的文本。这可以是字符串,也可以是值 None。请注意,如果没有文本,则此属性可以是 None 或空字符串,具体取决于解析器。

'tail': 一个可选的字符串。此元素的结束标签之后但下一个同级元素的开始标签之前的文本。这可以是字符串,也可以是值 None。请注意,如果没有文本,则此属性可能为 None 或为空字符串,具体取决于解析器。

extra: 以关键字参数给出的其他元素属性

并在 Python 序列中存储了许多子元素

例如:text...tail。

def __init__(self, tag, attrib={}, **extra):

if not isinstance(attrib, dict):

raise TypeError("attrib must be dict, not %s" % (

attrib.__class__.__name__,))

self.tag = tag

self.attrib = {**attrib, **extra}

self._children = []

要创建元素实例,请使用Element构造函数或SubElement工厂函数。您还可以使用ElementTree类包装元素结构,并将其与 XML 相互转换。

attrib = {'id': 'root'}

extra = {'name': 'root'}

tag = 'html'

html = ET.Element(tag, attrib, **extra)

html

len(html) # 子元素为 0

0

创建子元素

tag2 = 'body'

attrib2 = {'name': 'body'}

# 创建新的元素

body = html.makeelement(tag2, attrib2)

# 将 body 作为 html 的子元素

html.append(body)

len(html) # 子元素添加

1

考虑到元素的可拓展性,最好使用 SubElement 工厂函数,来生成子元素。上面的子元素可以这样生成:

body = ET.SubElement(html, tag2, attrib2, **extra)

body



推荐阅读
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 标题: ... [详细]
  • Iamtryingtocreateanarrayofstructinstanceslikethis:我试图创建一个这样的struct实例数组:letinstallers: ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了源码分析--ConcurrentHashMap与HashTable(JDK1.8)相关的知识,希望对你有一定的参考价值。  Concu ... [详细]
  • Echarts图表重复加载、axis重复多次请求问题解决记录
    文章目录1.需求描述2.问题描述正常状态:问题状态:3.解决方法1.需求描述使用Echats实现了一个中国地图:通过选择查询周期&#x ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 微信商户扫码支付 java开发 [从零开发]
    这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支 ... [详细]
author-avatar
梦里的天真575
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有