python操作xml文件--elementTree用法

1. xml文件格式示例

 <?xml version='1.0' encoding='utf-8'?>
<users>
    <user>
<id>1</id>
      <name>lili</name>
        <telephone>1514446</telephone>
    </user>
    <user>
<id>2</id>
    <name>liming</name>
        <telephone>1365945</telephone>
    </user>
</users>

1.1 import代碼

from xml.etree import ElementTree as ET
from xml.etree.ElementTree import Element
import os
import time


2. 讀取xml文件格式(如果沒有就新建)

XMLFile = os.getcwdu() + "/xml/phone.xml"
def read_xml():
    if not os.path.exists(XMLFile):
        fo = open(XMLFile,"w")
        fo.write("<?xml version='1.0' encoding='utf-8'?><users></users>")
        fo.close()

    root = ET.parse(XMLFile).getroot()
    users = root.findall('user')
    userArr = []
    for user in users:
        id = user.find(“id”).text
        name = user.find("name").text
        tele = user.find("telephone").text
        userInfo = {
            "id": id,
            "name": name,
            "telephone": tele
        }
        userArr.append(userInfo)
    return userArr


3. 插入節點

def insert(name, telephone):
    tree = ET.parse(XMLFile)
    root = tree.getroot()
    user = Element("user")
    root.append(user)


    idNode = Element("id")
    idNode.text = generateID()
    user.append(idNode)

    nameNode = Element("name")
    nameNode.text = name
    user.append(nameNode)

    phoneNode = Element("telephone")
    phoneNode.text = telephone
    user.append(phoneNode)
    try:
        tree.write(XMLFile, encoding="utf-8", xml_declaration=True)
        return 1
    except Exception as e:
        print e
        return 0

4.更新節點

def update(id, name, telephone):
    tree = ET.parse(XMLFile)
    root = tree.getroot()
    users = root.findall('user')  # 找到所有user節點
    for user in users:
        if user.find("id").text == id:
            teleNode = user.find("telephone")
            teleNode.text = telephone
            nameNode =  user.find("name")
            nameNode.text = name
    try:
        tree.write(XMLFile, encoding="utf-8", xml_declaration=True)
        return 1
    except Exception as e:
        print e
        return 0

5.刪除節點

def delete(id):
    tree = ET.parse(XMLFile)
    root = tree.getroot()
    users = root.findall('user')  # 找到所有user節點
    for user in users:
        if user.find("id").text == id:
            user.remove(user.find("id"))
            user.remove(user.find("name"))
            user.remove(user.find("telephone"))
            user.clear()
            root.remove(user)
    try:
        tree.write(XMLFile, encoding="utf-8", xml_declaration=True)
        return 1;
    except Exception as e:
        print e
        return 0;

6.根據時間生成id

def generateID():
    return time.strftime('%Y%m%d_%H%M%S')


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章