python 之xml 使用原生xml.dom

news/2025/1/15 6:29:47/
一、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.ppmy.cn/news/1151633.html

相关文章

pytorch中的池化函数

PyTorch 提供了多种池化函数&#xff0c;用于对输入数据进行不同类型的池化操作。以下是一些常用的 PyTorch 池化函数&#xff1a; 平均池化&#xff08;Average Pooling&#xff09;: nn.AvgPool1d: 一维平均池化。nn.AvgPool2d: 二维平均池化。nn.AvgPool3d: 三维平均池化。 …

Linux友人帐之系统管理与虚拟机相关

一、虚拟机相关操作 1.1虚拟机克隆 虚拟机克隆是指将一个已经安装好的虚拟机复制出一个或多个完全相同的副本&#xff0c;包括虚拟机的配置、操作系统、应用程序等&#xff0c;从而节省安装和配置的时间和资源。 虚拟机克隆的主要用途有&#xff1a; 创建多个相同或相似的虚拟…

走进Spark

什么是Spark 是一个基于内存的&#xff0c;用于大规模数据处理&#xff08;离线计算、实时计算、快速查询&#xff08;交互式查询&#xff09;&#xff09;的统一分析引擎&#xff0c;因为是基于内存的所以可以更快的完成任务 离线计算:离线计算一般存储在HDFS中使用MapReduce或…

电商数据接口平台1688阿里巴巴获得搜索词推荐获取商品详情数据

1688.item_search_suggest-获得搜索词推荐 公共参数 请求地址: 注册请求接入调用key 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[ite…

uni-app:本地缓存的使用

uni-app 提供了多种方法用于本地缓存的操作。下面是一些常用的 uni-app 本地缓存方法&#xff1a; uni.setStorageSync(key, data): 同步方式将数据存储到本地缓存中&#xff0c;可以使用对应的 key 来获取该数据。 uni.setStorage({key, data}): 异步方式将数据存储到本地缓存…

【小巧玲珑】文件太大,怎么办?分卷压缩技术了解下,这才是压缩技术

【小巧玲珑】文件太大&#xff0c;怎么办&#xff1f;分卷压缩技术了解下&#xff0c;这才是压缩技术 1、痛点2、场景重现2.1 jar包2.1 ZIP压缩 3、压缩步骤3.1 新建压缩文件3.2 压缩结果 4、解压步骤5、效果6、jar压缩算法 1、痛点 通过浏览器客户端访问云服务&#xff0c;文…

UI自动化测试:Selenium+PO模式+Pytest+Allure整合

本人目前工作中未涉及到WebUI自动化测试&#xff0c;但为了提升自己的技术&#xff0c;多学习一点还是没有坏处的&#xff0c;废话不多说了&#xff0c;目前主流的webUI测试框架应该还是selenium&#xff0c;考虑到可维护性、拓展性、复用性等&#xff0c;我们采用PO模式去写我…

C++学习——对象数组、成员对象与封闭类

以下内容源于C语言中文网的学习与整理&#xff0c;非原创&#xff0c;如有侵权请告知删除。 一、对象数组 对象数组&#xff0c;即数组的每个元素都是某个类的对象。 1、对象数组中的每个元素都需要用构造函数初始化&#xff0c;具体哪些元素用哪些构造函数初始化&#xff0c…