python 之xml 使用原生xml.dom

一、xml操作
  • 使用xml进行创建
    <Placemark id="placemark_id"><name>模型</name><Location><longitude>121.6097139799135</longitude></Location>
    </Placemark>
    
    from xml.dom import minidom# 创建一个新的XML文档
    doc1 = minidom.Document()# 创建根元素并设置其属性
    root1_elem = doc1.createElement("Placemark")
    root1_elem.setAttribute("id", "mode_placemark_id")
    doc1.appendChild(root1_elem)# 创建<name>元素并添加到根元素, 值为模型
    name_elem = doc1.createElement("name")
    name_elem.appendChild(doc1.createTextNode("模型"))
    root1_elem.appendChild(name_elem)# 创建<Location>元及其子元素
    location_elem = doc1.createElement("Location")
    root1_elem.appendChild(location_elem)# 设置经度
    lon_elem = doc1.createElement("longitude")
    lon_elem.appendChild(doc1.createTextNode("121.6097139799135"))
    location_elem.appendChild(lon_elem)print(doc1.toprettyxml(indent="  "))
    
二、获取值、修改值
  • 直接获取数据

    lon = lon_elem.firstChild.nodeValue
    lon = doc.getElementsByTagName('longitude')[0].firstChild.nodeValue
    
  • 通过父节点定义子节点 并获取值

    location_node = root_elem.getElementsByTagName('Location')[0]
    lon = location_node.getElementsByTagName('longitude')[0].firstChild.nodeValue
    
  • 重新赋值

    lon_elem.firstChild.nodeValue = '114.1284142342'
    
  • 添加子节点

    # 设置纬度
    lat_elem = doc1.createElement("latitude")
    lat_elem.appendChild(doc1.createTextNode("24.67367524368988"))
    location_elem.appendChild(lat_elem)
    
三、将一个xml文档,插入另一文档中(将一个节点值插入另一个节点)
  • doc2 = minidom.Document()
    # 创建根节点
    root2_elem = doc2.createElement("Root")
    doc2.appendChild(root2_elem)alt_elem = doc2.createElement("altitude")
    alt_elem.appendChild(doc2.createTextNode('118'))
    root2_elem.appendChild(alt_elem)  # 添加到根节点range_elem = doc2.createElement("range")
    range_elem.appendChild(doc2.createTextNode('0'))
    root2_elem.appendChild(range_elem)  # 添加到根节点
    
  • 将一个xml文档某个元素插入另一个文档,插入另一文档中

    将alt_elem 插入到doc1
    imported_alt_elem = doc1.importNode(alt_elem, deep=True)
    location_elem.appendChild(imported_alt_elem)
    
    将root2_elem及其下的子元素 插入到doc1
    imported_root_elem_other = doc1.importNode(root2_elem, deep=True)
    location_elem.appendChild(imported_root_elem_other)
    
  • 将另个文档中的节点,插入指定节点

    将imported_alt_elem 节点插入 lon_elem 的前面
    imported_alt_elem = doc1.importNode(alt_elem, deep=True)
    location_elem.insertBefore(imported_alt_elem, lon_elem)
    
    将imported_alt_elem 放到 lat_elem 的后面
    imported_alt_elem = doc1.importNode(alt_elem, deep=True)
    location_elem.insertBefore(imported_alt_elem, lat_elem.nextSibling)
    
    将imported_alt_elem 放到 lon_elem 的后面
    imported_alt_elem = doc1.importNode(alt_elem, deep=True)
    location_elem.insertBefore(imported_alt_elem, lon_elem.nextSibling)
    
  • 将一个文档下的子节点放入另外一个节点

    # 遍历root2_elem的所有子元素
    for child in root2_elem.childNodes:# 导入子元素到doc1imported_child = doc1.importNode(child, deep=True)# 将导入的子元素添加到location_elem中location_elem.appendChild(imported_child)
    
  • 将某个文档直接插入另一个文档的某个节点下

    直接通过已经存在的引用导入节点
    imported_root2_elem = doc1.importNode(root2_elem, deep=True)
    location_elem.appendChild(imported_root2_elem)
    
    通过查询XML文档的根元素来导入节点
    imported_doc2_elem = doc1.importNode(doc2.documentElement, deep=True)
    location_elem.appendChild(imported_doc2_elem)
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/103610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第14章总结:lambda表达式与处理

14.1&#xff1a; lambada表达式 14.1.1&#xff1a;lambada表达式简介 无参数 package fourteen; interface SayhHi{ String say();//抽象方法接口 } public class NoParamDemo { public static void main(String[] args) { //无参数 …

【AI视野·今日Robot 机器人论文速览 第五十二期】Wed, 11 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Wed, 11 Oct 2023 Totally 31 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers RoboHive: A Unified Framework for Robot Learning Authors Vikash Kumar, Rutav Shah, Gaoyue Zhou, Vincent Moens, Vittor…

SAP MM学习笔记35 - 请求书照合中的差额处理(发票扣减,受入)

SAP中&#xff0c;请求书照合之后&#xff0c;发现不一致&#xff0c;就会支付保留。 支付保留&#xff0c;可以参考如下文章。 SAP MM学习笔记34 - 请求书照合中的支付保留&#xff08;发票冻结&#xff09;_东京老树根的博客-CSDN博客 即使支付保留之后暂时不付钱&#xff…

外卖跑腿系统开发的最佳实践和成功案例

外卖跑腿系统的开发既涉及技术实现&#xff0c;也需要考虑用户体验、运营策略和合规性。以下是一些最佳实践和一些成功的案例&#xff0c;以帮助您更好地理解这个领域的要点。 1. 技术框架的选择 选择适合的技术框架是外卖跑腿系统成功的关键。您可以考虑使用以下技术&#…

mysql面试题45:读写分离常见方案、哪些中间件可以实现读写分离

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说一说你知道的读写分离常见方案 读写分离是一种常见的数据库架构方案,旨在分担数据库的读写压力,提高系统的性能和可扩展性。以下是两种常见的…

hadoop -hive 安装

1.下载hive http://archive.apache.org/dist/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz2.解压/usr/app 目录 tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /usr/app3.设置软连接 ln -s /usr/app/apache-hive-3.1.3-bin /usr/app/hive4.修改/usr/app/hive/conf/hive-env.…

Nacos 小bug: application.properties配置未生效,导致端口未生效

最近用了下nacos 1.4.6 ,发现windows 中修改配置中的启动端口未生效&#xff0c;其实就是配置文件没读取到。 去github 逛了一下issue ,参考这个&#xff1a;https://github.com/alibaba/nacos/issues/10217 这哥们儿是nacos 1.4.5 Linux系统下的相同问题&#xff0c;shell 中…

HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Radio

单选框&#xff0c;提供相应的用户交互选择项。该组件从API Version 8开始支持。无子组件。 一、接口 Radio(options: {value: string, group: string}) 从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。 参数: 二、属性 除支持通用属性外&#xff0c;还支持以…

以字符串mark作为分隔符,对字符串s进行分割

int main() {string s "How are you?";string mark " ";string tmp;int cur 0, first 0;//找到第一个标记while ((cur s.find_first_of(mark, cur)) ! string::npos){//获取第一个标记前的子串tmp s.substr(first, cur - first);cout << tmp …

更新 | 持续开源迅为RK3568驱动指南第十二篇-GPIO子系统

《iTOP-RK3568开发板驱动开发指南》更新&#xff0c;本次更新内容对应的是驱动&#xff08;第十二期_GPIO子系统-全新升级&#xff09;视频&#xff0c;后续资料会不断更新&#xff0c;不断完善&#xff0c;帮助用户快速入门&#xff0c;大大提升研发速度。 文档教程更新至第十…

基于FPGA的视频接口之千兆网口(四配置)

简介 相信网络上对于FPGA驱动网口的开发板、博客、论坛数不胜数,为何博主需要重新手敲一遍呢,而不是做一个文抄君呢!因为目前博主感觉网络上描述的多为应用层上的开发,非从底层开始说明,本博主的思虑还是按照老规矩,按照硬件、底层、应用等关系,使用三~四篇文章,来详细…

Flutter - 波浪动画和lottie动画的使用

demo 地址: https://github.com/iotjin/jh_flutter_demo 代码不定时更新&#xff0c;请前往github查看最新代码 波浪动画三方库wave lottie动画 Lottie 是 Airbnb 开发的一款能够为原生应用添加动画效果的开源工具。具有丰富的动画效果和交互功能。 # 波浪动画 https://pub-web…

05-MogoDB执行计划

执行计划 MongoDB 查询分析可以确保我们建议的索引是否有效&#xff0c;是查询语句性能分析的重要工具 #插入1000条数据 for(var i1;i<1000;i)db.user.insert({id:100i,username:name_i,age:10i})#查看执行计划 > db.user.find({age:{$gt:100},id:{$lt:200}}).explain(…

家政服务小程序,家政维修系统,专业家政软件开发商;家政服务小程序,家政行业软件开发

家政服务小程序&#xff0c;家政维修系统&#xff0c;专业家政软件开发商&#xff1b; 家政服务小程序&#xff0c;家政行业软件开发解决方案&#xff0c;家政软件经验丰富实践&#xff0c;系统高度集成&#xff0c;提供师傅端、用户端、… 家政服务app开发架构有 1、后台管理端…

用什么工具来画UML?

2023年10月9日&#xff0c;周一晚上 目录 我的决定 关于rational rose UML工具有哪些 相关资料 我的决定 我决定用plantUML、draw.io或starUML就可以了 其实没必要在意工具&#xff0c; 重要的是能把图画出来、把图画好画规范&#xff0c; 重要的是知道怎么去画图、把意…

nnunetv2训练报错 ValueError: mmap length is greater than file size

目录 报错解决办法 报错 笔者在使用 nnunetv2 进行 KiTS19肾脏肿瘤分割实验的训练步骤中 使用 2d 和3d_lowres 训练都没有问题 nnUNetv2_train 40 2d 0nnUNetv2_train 40 3d_lowres 0但是使用 3d_cascade_fullres 和 3d_fullres 训练 nnUNetv2_train 40 3d_cascade_fullres …

如何实现前端缓存管理?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

SQL sever中的视图

目录 一、视图概述&#xff1a; 二、视图好处 三、创建视图 法一&#xff1a; 法二&#xff1a; 四、查看视图信息 五、视图插入数据 六、视图修改数据 七、视图删除数据 八、删除视图 法一&#xff1a; 法二&#xff1a; 一、视图概述&#xff1a; 视图是一种常用…

K8S云计算系列-(4)

K8s Dashboard UI 部署实操 Kubernetes实现的最重要的工作是对Docker容器集群统一的管理和调度&#xff0c;通常使用命令行来操作Kubernetes集群及各个节点&#xff0c;命令行操作非常不方便&#xff0c;如果使用UI界面来可视化操作&#xff0c;会更加方便的管理和维护。如下为…

苹果上架常见问题-appstore开发者名称修改

转载&#xff1a;appstore开发者名称修改 在App Store中&#xff0c;开发者名称是一个非常关键的信息&#xff0c;它决定了用户对应用的信任度和对开发者的认知程度。开发者名称也是一个非常重要的推广工具&#xff0c;一个好的开发者名称可以帮助开发者吸引更多的用户关注。因…