python使用etree写回文件出现nso,ns1前缀问题

2024-02-15 01:38

本文主要是介绍python使用etree写回文件出现nso,ns1前缀问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

**

代码

**

import xml.etree.ElementTree as ET
import osclass Deal_Xml:def get_tree_root(self,file_url):"""根据文件路径查询根节点集合:param file_url: 文件路径:return: 返回实例对象本身用于链式操作"""tree = ET.parse(file_url)root = tree.getroot()self.root = rootself.tree = treereturn selfdef search_tags(self, tag_name):""":param tag_name:需要查询的标签名称:return: 返回实例对象本身用于链式操作"""ln_tags = list();ln_tag = self.root.iter(tag_name)while True:try:#print(ln_tag)ln = next(ln_tag)ln_tags.append(ln)except StopIteration:break;self.ln_tags = ln_tagsreturn selfdef add_Tag_by_classNames(self, class_names):""":param tags::param class_names::return: 返回实例对象本身用于链式操作"""if not class_names is None and len(class_names) > 0:for tag in self.ln_tags:if not self.check_has_tag(tag):if tag.get("lnClass") in class_names:tag.append(self.get_content_tag())else:continuereturn selfdef get_content_tag(self):""":return: 需要添加的内容"""content = '''<DOI desc="IED设备重启" name="ReStart"><DAI name="dU"><Val>IED设备重启123456</Val></DAI></DOI>'''return ET.fromstring(content)def check_has_tag(self, tag):"""检查tag是哦福已经存在:param tag:tag 名字:return: 存在返回 True 不存在返回False"""doi_arr = tag.findall("DOI")for doi in doi_arr:if 'desc' in doi.attrib.keys() and doi.get("desc") == "IED设备重启":return Truereturn Falsedef writeToLocal(self):"""写回本地"""file_url = os.getcwd() + "\\%s" % "kkk.xml"try:outputs = self.treeself.tree.write(file_url, encoding="UTF-8")except Exception:print("写回本地报错")if "__main__" == __name__:#获取xml文件路径file_url = os.getcwd()+"\\%s" % "ICD-ZR-KLJC018-HZKL(ZPEPC_V3.2).icd"#file_url = os.getcwd() + "\\%s" % "kk.xml"#获取根节点lns = Deal_Xml().get_tree_root(file_url).search_tags("LN").add_Tag_by_classNames(('STWD', 'SVBR')).writeToLocal()

在这里插入图片描述
解决方案:
在这里插入图片描述
添加:ET.register_namespace('', 'http://www.iec.ch/61850/2003/SCL')

在这里插入图片描述

这篇关于python使用etree写回文件出现nso,ns1前缀问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/710123

相关文章

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

mybatis中resultMap的association及collectio的使用详解

《mybatis中resultMap的association及collectio的使用详解》MyBatis的resultMap定义数据库结果到Java对象的映射规则,包含id、type等属性,子元素需... 目录1.reusltmap的说明2.association的使用3.collection的使用4.总

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder