Chinaunix首页 | 论坛 | 博客
  • 博客访问: 28387
  • 博文数量: 10
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 120
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-14 11:23
文章分类

全部博文(10)

文章存档

2015年(2)

2014年(8)

我的朋友

分类: Python/Ruby

2015-01-11 16:03:11

xml文件生成:

点击(此处)折叠或打开

  1. def GenerateXml():
  2.     impl = xml.dom.minidom.getDOMImplementation()
  3.     dom = impl.createDocument(None, 'detect', None)
  4.     root = dom.documentElement
  5.     baseInfo = dom.createElement('baseInfo')
  6.     root.appendChild(baseInfo)

  7.     dateE=dom.createElement('date')
  8.     dateT=dom.createTextNode('2015-01-11 14:23:00')
  9.     dateE.appendChild(dateT)
  10.     baseInfo.appendChild(dateE)

  11.     lineNameE = dom.createElement('lineName')
  12.     lineNameT = dom.createTextNode('京津线')
  13.     lineNameE.appendChild(lineNameT)
  14.     baseInfo.appendChild(lineNameE)

  15.     directionE = dom.createElement('direction')
  16.     directionT = dom.createTextNode('下行')
  17.     directionE.appendChild(directionT)
  18.     baseInfo.appendChild(directionE)

  19.     startStationE = dom.createElement('startStation')
  20.     startStationT = dom.createTextNode('北京')
  21.     startStationE.appendChild(startStationT)
  22.     baseInfo.appendChild(startStationE)

  23.     endStationE = dom.createElement('endStation')
  24.     endStationT = dom.createTextNode('天津')
  25.     endStationE.appendChild(endStationT)
  26.     baseInfo.appendChild(endStationE)

  27.     trainNoE = dom.createElement('trainNo')
  28.     trainNoT = dom.createTextNode('G121')
  29.     trainNoE.appendChild(trainNoT)
  30.     baseInfo.appendChild(trainNoE)

  31.     appendInfo = dom.createElement('appendInfo')
  32.     root.appendChild(appendInfo)

  33.     startTimeE = dom.createElement('startTime')
  34.     startTimeT = dom.createTextNode('2015-01-11 14:23:00')
  35.     startTimeE.appendChild(startTimeT)
  36.     appendInfo.appendChild(startTimeE)

  37.     endTimeE = dom.createElement('endTime')
  38.     endTimeT = dom.createTextNode('2015-01-11 14:23:59')
  39.     endTimeE.appendChild(endTimeT)
  40.     appendInfo.appendChild(endTimeE)

  41.     startKmE = dom.createElement('startKm')
  42.     startKmT = dom.createTextNode('123')
  43.     startKmE.appendChild(startKmT)
  44.     appendInfo.appendChild(startKmE)

  45.     endKmE = dom.createElement('endKm')
  46.     endKmT = dom.createTextNode('234')
  47.     endKmE.appendChild(endKmT)
  48.     appendInfo.appendChild(endKmE)

  49.     startPoleNoE = dom.createElement('startPoleNo')
  50.     startPoleNoT = dom.createTextNode('34')
  51.     startPoleNoE.appendChild(startPoleNoT)
  52.     appendInfo.appendChild(startPoleNoE)

  53.     endPoleNoE = dom.createElement('endPoleNo')
  54.     endPoleNoT = dom.createTextNode('45')
  55.     endPoleNoE.appendChild(endPoleNoT)
  56.     appendInfo.appendChild(endPoleNoE)

  57.     f = open('info2.xml', 'w')
  58.     dom.writexml(f, addindent=' ', newl='\n', encoding='utf-8')
  59.     f.close()


  60. if __name__ == '__main__':
  61.     GenerateXml()
XML文件读:

点击(此处)折叠或打开

  1. from xml.dom import minidom


  2. def get_attrvalue(node, attrname):
  3.     return node.getAttribute(attrname) if node else ''


  4. def get_nodevalue(node, index=0):
  5.     return node.childNodes[index].nodeValue if node else ''


  6. def get_xmlnode(node, name):
  7.     return node.getElementsByTagName(name) if node else []


  8. def xml_to_string(filename='user.xml'):
  9.     doc = minidom.parse(filename)
  10.     return doc.toxml('UTF-8')


  11. def get_xml_data(filename='info.xml'):
  12.     doc = minidom.parse(filename)
  13.     root = doc.documentElement

  14.     baseInfo_nodes = get_xmlnode(root, 'baseInfo')
  15.     appendInfo_nodes = get_xmlnode(root, 'appendInfo')
  16.     info_list = []

  17.     for node in baseInfo_nodes:
  18.         node_date = get_xmlnode(node, 'date')
  19.         node_lineName = get_xmlnode(node, 'lineName')
  20.         node_direction = get_xmlnode(node, 'direction')
  21.         node_startStation = get_xmlnode(node, 'startStation')
  22.         node_endStation = get_xmlnode(node, 'endStation')
  23.         node_trainNo = get_xmlnode(node, 'trainNo')


  24.         baseInfo_date = get_nodevalue(node_date[0]).encode('utf-8', 'ignore')
  25.         baseInfo_lineName = get_nodevalue(node_lineName[0]).encode('utf-8', 'ignore')
  26.         baseInfo_direction = get_nodevalue(node_direction[0]).encode('utf-8', 'ignore')
  27.         baseInfo_startStation = get_nodevalue(node_startStation[0]).encode('utf-8', 'ignore')
  28.         baseInfo_endStation = get_nodevalue(node_endStation[0]).encode('utf-8', 'ignore')
  29.         baseInfo_trainNo = get_nodevalue(node_trainNo[0]).encode('utf-8', 'ignore')

  30.         baseInfo = {}
  31.         baseInfo['date'] = baseInfo_date
  32.         baseInfo['lineName'] = baseInfo_lineName
  33.         baseInfo['direction'] = baseInfo_direction
  34.         baseInfo['startStation'] = baseInfo_startStation
  35.         baseInfo['endStation'] = baseInfo_endStation
  36.         baseInfo['trainNo'] = baseInfo_trainNo
  37.         info_list.append(baseInfo)

  38.     for node in appendInfo_nodes:
  39.         node_startTime = get_xmlnode(node, 'startTime')
  40.         node_endTime = get_xmlnode(node, 'endTime')
  41.         node_startKm = get_xmlnode(node, 'startKm')
  42.         node_endKm = get_xmlnode(node, 'endKm')
  43.         node_startPoleNo = get_xmlnode(node, 'startPoleNo')
  44.         node_endPoleNo = get_xmlnode(node, 'endPoleNo')

  45.         appendInfo_startTime = get_nodevalue(node_startTime[0]).encode('utf-8', 'ignore')
  46.         appendInfo_endTime = get_nodevalue(node_endTime[0]).encode('utf-8', 'ignore')
  47.         appendInfo_startKm = get_nodevalue(node_startKm[0]).encode('utf-8', 'ignore')
  48.         appendInfo_endKm = get_nodevalue(node_endKm[0]).encode('utf-8', 'ignore')
  49.         appendInfo_startPoleNo = get_nodevalue(node_startPoleNo[0]).encode('utf-8', 'ignore')
  50.         appendInfo_endPoleNo = get_nodevalue(node_endPoleNo[0]).encode('utf-8', 'ignore')

  51.         appendInfo = {}
  52.         appendInfo['startTime'] = appendInfo_startTime
  53.         appendInfo['endTime'] = appendInfo_endTime
  54.         appendInfo['startKm'] = appendInfo_startKm
  55.         appendInfo['endKm'] = appendInfo_endKm
  56.         appendInfo['startPoleNo'] = appendInfo_startPoleNo
  57.         appendInfo['endPoleNo'] = appendInfo_endPoleNo
  58.         info_list.append(appendInfo)

  59.     return info_list


  60. def test_laod_xml(fileName):
  61.     info_list = get_xml_data(fileName)
  62.     i = 0
  63.     for info in info_list:
  64.         if i == 0:
  65.             print '-----------------------------------------------------'
  66.             if info:
  67.                 info_str = '检测日期:%s\n线路:%s\n行别:%s\n起始站:%s\n结束站:%s\n机车号:%s\n ' % (
  68.                     info['date'], info['lineName'], info['direction'], info['startStation'], info['endStation'], info['trainNo'])
  69.             print info_str
  70.             print '====================================================='
  71.             i += 1
  72.         else:
  73.             print '-----------------------------------------------------'
  74.             if info:
  75.                 info_str = '开始录制时间:%s\n结束录制时间:%s\n开始公里标:%s\n结束公里标:%s\n开始杆号:%s\n结束杆号:%s\n ' % (
  76.                     info['startTime'], info['endTime'], info['startKm'], info['endKm'], info['startPoleNo'],
  77.                     info['endPoleNo'])
  78.             print info_str
  79.             print '====================================================='




  80. if __name__ == "__main__":
  81.     test_laod_xml('info.xml')

参考博客:
http://blog.sina.com.cn/s/blog_63041bb80101bs5r.html
阅读(949) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~