python处理xml文件的方法小结

发布时间 - 2026-01-11 00:55:32    点击率:

本文实例讲述了python处理xml文件的方法。分享给大家供大家参考,具体如下:

前一段时间因为工作的需要,学习了一点用Python处理xml文件的方法,现在贴出来,供大家参考。

xml文件是按节点一层一层来叠加的,最顶层的是根节点。比如说:

<sys:String x:Key="STR_License_WithoutLicense">Sorry, you are not authorized.</sys:String>

其中sys:String为节点名字,x:Key的内容为Attribute,xml节点值为sys:String的子节点,它是文本节点类型。<节点名称   x:Key="Attribute">子节点。。。

RPD的xml格式:

<ResourceDictionary>
<sys:String x:Key="STR_Startup_LaunchRPD">Launching Polycom RealPresence Desktop</sys:String>
<sys:String x:Key="STR_Startup_CheckFolder">Checking folder</sys:String>

CMAD的xml格式:

<language-strings>
 <ABK_CALL comment="verb (command, button on screen to press to place a call);" controls="Button" products="HDX,VSX,CMAD,Venus Main">
  <ARABIC notes="" last-change-date="" status="">打电话</ARABIC>
  <CHINESE_S notes="" last-change-date="" status="">呼叫</CHINESE_S>

该代码的功能是:

从RPD的String中取出节点值,在CMAD的String中查找是否已经存在,如果存在,则返回CMAD中对应String的NodeName(节点名),并把两个节点名一个做节点名,一个做节点值写到xml文件中;如果不存在,则把RPD中的该节点写到另外一个xml文件中。代码如下:

import xml.dom.minidom
from xml.dom.minidom import Document
RPD_Str_path = "E:/PythonCode/StringResource.en-US.xaml"
RPD_dom = xml.dom.minidom.parse(RPD_Str_path)
CMAD_Str_path = "E:/PythonCode/M500_RPM13_0522.xml"
CMAD_dom = xml.dom.minidom.parse(CMAD_Str_path)
#得到根节点
RPD_root = RPD_dom.documentElement
CMAD_root = CMAD_dom.documentElement
def IsStr_already_Translated(RPD_Str):
  for firstLevel in CMAD_root.childNodes:
    for SecondLevel in firstLevel.childNodes:
      if SecondLevel.nodeType == SecondLevel.ELEMENT_NODE:
        if SecondLevel.nodeName == "ENGLISH_US":
          if RPD_Str == SecondLevel.childNodes[0].data.strip():
            return firstLevel.nodeName
          else:
            continue
        else:
          continue
      else:
        continue
    else:
      continue
  else:
    return "Null"
#用Document来写xml文件
Mapping_doc = Document()
Mapping_root = Mapping_doc.createElement("Common_String")
Mapping_doc.appendChild(Mapping_root)
Translation_doc = Document()
Translation_root = Translation_doc.createElement("Need_Translation_String")
Translation_doc.appendChild(Translation_root)
for node in RPD_root.childNodes:
  if node.nodeType == node.ELEMENT_NODE:
#    print node.getAttribute("x:Key") +"  +  "+ node.childNodes[0].data
  CMAD_Key = IsStr_already_Translated(node.childNodes[0].data.strip())
  if(CMAD_Key != "Null"):
    mKey = Mapping_doc.createElement(node.getAttribute("x:Key"))
    Mapping_root.appendChild(mKey)
    mValue = Mapping_doc.createTextNode(CMAD_Key)
    mKey.appendChild(mValue)
  elif(CMAD_Key == "Null"):
    Key = Translation_doc.createElement('sys:String')
    Translation_root.appendChild(Key)
    Key.setAttribute('x:Key', node.getAttribute("x:Key"))
    Value = Translation_doc.createTextNode(node.childNodes[0].nodeValue)
    Key.appendChild(Value)
    continue
else:
  path1 = "E:/PythonCode/ID_Mapping.xml"
  try:
    import codecs
    f1 = codecs.open(path1, "wb", "utf-8")
    f1.write(Mapping_doc.toprettyxml(indent=" "))
  except:
    print('Write xml file failed.... file:{0}'.format(path1))
  path2 = "E:/PythonCode/Need_Translate_String.xml"
  try:
    f2 = codecs.open(path2, "wb", "utf-8")
    f2.write(Translation_doc.toprettyxml(indent=" "))
  except:
    print('Write xml file failed.... file:{0}'.format(path2))

PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:

在线XML/JSON互相转换工具:
http://tools./code/xmljson

在线格式化XML/在线压缩XML
http://tools./code/xmlformat

XML在线压缩/格式化工具:
http://tools./code/xml_format_compress

XML代码在线格式化美化工具:
http://tools./code/xmlcodeformat

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python操作xml数据技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。


# python  # xml文件  # 浅谈Python大神都是这样处理XML文件的  # 实例Python处理XML文件的方法  # python标准库ElementTree处理xml  # Python在字符串中处理html和xml的方法  # Python利用ElementTree模块处理XML的方法详解  # Python处理XML格式数据的方法详解  # 在Python中处理XML的教程  # python处理xml文件操作详解  # 写到  # 的是  # 进阶  # 操作技巧  # 相关内容  # 它是  # 感兴趣  # 数据结构  # 给大家  # 不存在  # 另外一个  # 更多关于  # 并把  # 所述  # 贴出  # 几款  # 程序设计  # 值为  # 使用技巧  # 来写 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 详解阿里云nginx服务器多站点的配置  如何快速搭建高效简练网站?  如何在腾讯云服务器快速搭建个人网站?  西安专业网站制作公司有哪些,陕西省建行官方网站?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  免费视频制作网站,更新又快又好的免费电影网站?  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  如何在搬瓦工VPS快速搭建网站?  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  如何确保FTP站点访问权限与数据传输安全?  Android okhttputils现在进度显示实例代码  如何在七牛云存储上搭建网站并设置自定义域名?  如何快速搭建高效可靠的建站解决方案?  原生JS实现图片轮播切换效果  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  高性能网站服务器配置指南:安全稳定与高效建站核心方案  高性价比服务器租赁——企业级配置与24小时运维服务  Python文本处理实践_日志清洗解析【指导】  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  LinuxCD持续部署教程_自动发布与回滚机制  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  如何在阿里云域名上完成建站全流程?  javascript中的try catch异常捕获机制用法分析  Android中AutoCompleteTextView自动提示  如何快速查询域名建站关键信息?  海南网站制作公司有哪些,海口网是哪家的?  如何快速生成ASP一键建站模板并优化安全性?  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  Python自动化办公教程_ExcelWordPDF批量处理案例  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  WEB开发之注册页面验证码倒计时代码的实现  如何在阿里云部署织梦网站?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  SQL查询语句优化的实用方法总结  nginx修改上传文件大小限制的方法  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  Laravel API资源类怎么用_Laravel API Resource数据转换  如何快速上传建站程序避免常见错误?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  详解Android中Activity的四大启动模式实验简述