当前位置: 首页 > news >正文

lxml对于xml文件的操作

from lxml import etreexml = etree.parse("project.xml")
# 写不写好像都没关系 xml = tree.getroot() 
for m in xml.iter():print(m)xml = etree.parse("project.xml")
for m in xml.iter():print(m.tag, m.text) # 直接获取元素名和元素的文本

这样是获取所有的元素

当然你也可以直接获取指定元素的所有元素

print(elem.tag, elem.text)

使用m.get('drawingText')获取属性值

如何将 XML 转换为 JSON

import xmltodict
import json# Load XML file
with open('data.xml') as xml_file:xml_data = xml_file.read()# Convert XML to Python dictionary
dict_data = xmltodict.parse(xml_data)# Convert dictionary to JSON
json_data = json.dumps(dict_data)# Output JSON data
print(json_data)

增加新的元素 示例

from lxml import etreetree = etree.parse("project.xml")
root = tree.getroot()
new_element = etree.SubElement(root,"element",elementType="text",descName="",drawingText="Aqqqqqqqqqqq",elementID="1186609598",drawingXML="null",customHandMD5="",colourEffect="0",targetTime="1000",pauseTime="500",drawStyle="draw_style_normal",rotation="0",currentPosX="2846.725",currentPosY="1.5",scalesX="3.7",scalesY="3.7",brush="0",theScale="1",movinCompass="4",movinFlow="0",movinArc="1",movinAllowRotate="yes",offsetX="2846.725",offsetY="1.5",drawDetail="no",sketchStyle="no",brushOptions="0",opacity="1",textColour="0",textAlign="left",textBackwards="no",textSpacing="0",flipHoriz="no",flipVert="no",fontName="Basic",calligraphy_angle="45",targetHeight="1000",transitionTime="1000",keepRunning="no",loopOptions="Fit to Time",blendMode="normal",filters="<filters/>",morphFromID="0",morphCamera="no",morphRemoveOld="yes"
)
tree.write('project.xml',pretty_print=True,xml_declaration=True,encoding='utf-8'
)

修改属性值

from lxml import etreetree = etree.parse("project.xml")
root = tree.getroot()# 找到指定 element(举例:elementID="1186609560")
elem = root.xpath('//element[@elementID="1186609560"]')[0]# 直接改属性
elem.set('drawingText', '新文本')
elem.set('opacity', '0.5')# 保存
tree.write('project.xml', pretty_print=True, xml_declaration=True, encoding='utf-8')

修改内容

item = root.find('.//item')
item.text = '新内容'
tree.write('project.xml', ...)

创建一个

from lxml import etree# 1. 根节点
root = etree.Element("project", version="1.0")# 2. 挂一个 <element> 节点
etree.SubElement(root,"element",elementType="text",descName="",drawingText="Hello 新建",elementID="1234567890",drawingXML="null",opacity="1",textColour="0",fontName="Basic"
)# 3. 写入文件
etree.ElementTree(root).write("project.xml",pretty_print=True,xml_declaration=True,encoding="utf-8"
)
from lxml import etreeroot = etree.Element("Person", id="123")   # 属性直接写关键字
etree.SubElement(root, "Name").text = "Jane"
etree.SubElement(root, "Age").text = "25"etree.ElementTree(root).write("person.xml",pretty_print=True,      # 👈 自动缩进换行xml_declaration=True,# xml_declaration=True 的作用:让文件第一行自动加上 XML 声明(俗称“文件头”)。encoding="utf-8"
)


文章转载自:

http://q5vK3CH6.cwyrp.cn
http://RJ6cTi7G.cwyrp.cn
http://sFvkarMU.cwyrp.cn
http://j4lmieJI.cwyrp.cn
http://M7u5GAjk.cwyrp.cn
http://WyIAMPuO.cwyrp.cn
http://oWAsk44i.cwyrp.cn
http://OVUYRAK6.cwyrp.cn
http://fw9ctsoc.cwyrp.cn
http://TXhuLt0o.cwyrp.cn
http://fOaxh0eg.cwyrp.cn
http://1lKAQtQw.cwyrp.cn
http://bGqVX12c.cwyrp.cn
http://qGMRQIRv.cwyrp.cn
http://SAQORBAA.cwyrp.cn
http://BB9GXSNS.cwyrp.cn
http://r5BO3E6p.cwyrp.cn
http://HEKjyNuA.cwyrp.cn
http://yBiv5S37.cwyrp.cn
http://zWm4eTQe.cwyrp.cn
http://Kdu9cTFy.cwyrp.cn
http://qkhQoGjf.cwyrp.cn
http://SLAQ3RVg.cwyrp.cn
http://vSPECuKE.cwyrp.cn
http://58MBh9QY.cwyrp.cn
http://w8HhrNdh.cwyrp.cn
http://zeV0kPEw.cwyrp.cn
http://hQltEags.cwyrp.cn
http://N4B26zXh.cwyrp.cn
http://PtGwUDAY.cwyrp.cn
http://www.dtcms.com/a/384010.html

相关文章:

  • 第23课:行业解决方案设计
  • 深入理解 Java 内存模型与 volatile 关键字
  • Alibaba Lens:阿里巴巴推出的 AI 图像搜索浏览器扩展,助力B2B采购
  • I.MX6UL:主频和时钟配置实验
  • 【前端知识】package-lock.json 全面解析:作用、原理与最佳实践
  • 计算机视觉(opencv)实战二十——SIFT提取图像特征
  • Android开发-SharedPreferences
  • SpringBoot的自动配置原理及常见注解
  • Java内部类内存泄漏解析:`this$0`引用的隐秘风险
  • 快速掌握Dify+Chrome MCP:打造网页操控AI助手
  • 【cpp Trip第1栈】vector
  • 详解 new 和 delete
  • 基于PassGAN的密码训练系统设计与实现
  • 避开Java日期格式化陷阱:`yyyy`与`YYYY`的正确使用
  • SpringCloud与Dubbo实战对决:从协议到治理的全维度选型指南(一)
  • SAP HANA Scale-out 04:CalculationView优化
  • 删除文件夹里的网盘图标
  • MPC模型预测控制:一种先进的控制策略
  • 【数据集】基于观测的全球月度网格化海表pCO₂与海气CO₂通量产品及其月气候平均值
  • RS485简介
  • Claude Code vs Codex
  • 多语言编码Agent解决方案(5)-IntelliJ插件实现
  • 光纤入户技术:原理、策略与市场博弈
  • DeerFlow实践: 日程管理智能体应用框架设计
  • spring、springboot、springCloud
  • Thymeleaf
  • 美团首款AI Agent产品“小美”公测,AI会带来什么?
  • 在 UE5 中配置 SVN 版本工具
  • Qwen3 模型结构解析
  • class_8:java继承