最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python處理xml文件的方法小結

 更新時間:2017年05月02日 11:06:08   作者:Flying_tao  
這篇文章主要介紹了python處理xml文件的方法,結合實例形式總結分析了Python常見的xml文件處理技巧與相關注意事項,需要的朋友可以參考下

本文實例講述了python處理xml文件的方法。分享給大家供大家參考,具體如下:

前一段時間因為工作的需要,學習了一點用Python處理xml文件的方法,現(xiàn)在貼出來,供大家參考。

xml文件是按節(jié)點一層一層來疊加的,最頂層的是根節(jié)點。比如說:

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

其中sys:String為節(jié)點名字,x:Key的內容為Attribute,xml節(jié)點值為sys:String的子節(jié)點,它是文本節(jié)點類型。<節(jié)點名稱   x:Key="Attribute">子節(jié)點。。。

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中取出節(jié)點值,在CMAD的String中查找是否已經(jīng)存在,如果存在,則返回CMAD中對應String的NodeName(節(jié)點名),并把兩個節(jié)點名一個做節(jié)點名,一個做節(jié)點值寫到xml文件中;如果不存在,則把RPD中的該節(jié)點寫到另外一個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)
#得到根節(jié)點
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.jb51.net/code/xmljson

在線格式化XML/在線壓縮XML
http://tools.jb51.net/code/xmlformat

XML在線壓縮/格式化工具:
http://tools.jb51.net/code/xml_format_compress

XML代碼在線格式化美化工具:
http://tools.jb51.net/code/xmlcodeformat

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python操作xml數(shù)據(jù)技巧總結》、《Python數(shù)據(jù)結構與算法教程》、《Python Socket編程技巧總結》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • python人人網(wǎng)登錄應用實例

    python人人網(wǎng)登錄應用實例

    這篇文章主要介紹了python人人網(wǎng)登錄應用實例,是一個非常實用的技巧,需要的朋友可以參考下
    2014-09-09
  • Python爬蟲基礎之XPath語法與lxml庫的用法詳解

    Python爬蟲基礎之XPath語法與lxml庫的用法詳解

    這篇文章主要給大家介紹了關于Python爬蟲基礎之XPath語法與lxml庫用法的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-09-09
  • Django路由Path方法的實現(xiàn)

    Django路由Path方法的實現(xiàn)

    本文主要介紹了Django路由Path方法的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Python編程之多態(tài)用法實例詳解

    Python編程之多態(tài)用法實例詳解

    這篇文章主要介紹了Python編程之多態(tài)用法,以實例形式詳細分析了Python中多態(tài)的使用技巧,需要的朋友可以參考下
    2015-05-05
  • 用Pygal繪制直方圖代碼示例

    用Pygal繪制直方圖代碼示例

    這篇文章主要介紹了用Pygal繪制直方圖代碼示例,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12
  • Python迅速掌握語音識別之知識儲備篇

    Python迅速掌握語音識別之知識儲備篇

    語音識別是一門交叉學科。近二十年來,語音識別技術取得顯著進步,開始從實驗室走向市場。人們預計,未來10年內,語音識別技術將進入工業(yè)、家電、通信、汽車電子、醫(yī)療、家庭服務、消費電子產(chǎn)品等各個領域
    2021-11-11
  • python使用Streamlit庫制作Web可視化頁面

    python使用Streamlit庫制作Web可視化頁面

    一談到Web頁面,可能大家首先想到就是HTML,CSS或JavaScript。 本次小F就給大家介紹一下如何用Python制作一個數(shù)據(jù)可視化網(wǎng)頁,使用到的是Streamlit庫。輕松的將一個Excel數(shù)據(jù)文件轉換為一個Web頁面,提供給所有人在線查看。
    2021-05-05
  • Python中index()和seek()的用法(詳解)

    Python中index()和seek()的用法(詳解)

    下面小編就為大家?guī)硪黄狿ython中index()和seek()的用法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • pytorch 一行代碼查看網(wǎng)絡參數(shù)總量的實現(xiàn)

    pytorch 一行代碼查看網(wǎng)絡參數(shù)總量的實現(xiàn)

    這篇文章主要介紹了pytorch實現(xiàn)一行代碼查看網(wǎng)絡參數(shù)總量的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Python opencv操作深入詳解

    Python opencv操作深入詳解

    這篇文章主要介紹了Python opencv操作深入詳解,文中整理的比較詳細,有感興趣的同學可以學習下
    2021-03-03

最新評論

潮安县| 贵港市| 景宁| 利津县| 霍邱县| 满城县| 边坝县| 上思县| 广德县| 都安| 台中市| 荔浦县| 北京市| 江油市| 靖安县| 佛坪县| 张家港市| 平顺县| 长顺县| 五寨县| 射阳县| 康马县| 镇雄县| 盱眙县| 大埔县| 潜江市| 台东县| 淳化县| 鄯善县| 资阳市| 屯留县| 西宁市| 甘孜县| 墨竹工卡县| 咸宁市| 嘉义县| 定日县| 遂川县| 荆门市| 阿拉善右旗| 伊金霍洛旗|