爱游戏平台登录入口

  • python操纵xml文件具体先容
  • 2017年12月24日
  • 搜集搜集

对python读取xml文章良多,但大多文章爱游戏平台登录入口是贴一个xml文件,而后再贴个处置文件的代码。如许并倒霉于初学者的进爱游戏平台登录入口,但愿这篇文章能够更浅显易懂的教若何利用python 来读取xml 文件。

一、甚么是xml?

xml便可扩大标记说话,它能够用来标记数据、界说数据范例,是一种许可用户对本身的标记说话停止界说的源说话。

abc.xml

代码以下:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
    <maxid>4</maxid>
    <login username="pytest" passwd='123456'>
        <caption>Python</caption>
        <item id="4">
            <caption>测试</caption>
        </item>
    </login>
    <item id="2">
        <caption>Zope</caption>
    </item>
</catalog>

Ok ,从布局上,它很像咱们罕见的HTML超文本标记说话。但他们被设想的目标是不同的,超文本标记说话被设想用来显现数据,其焦点是数据的表面。它被设想用来传输和存储数据,其焦点是数据的内容。

那末它爱游戏平台登录入口以下特点:

起首,它是爱游戏平台登录入口标签对构爱游戏平台登录入口,<aa></aa>

标签能够爱游戏平台登录入口属性:<aa id='123'></aa>

标签对能够嵌入数据:<aa>abc</aa>

标签能够嵌入子标签(具备层级干爱游戏平台登录入口):

二、取得标签属性

那末,上面来先容若何用python来读取这类范例的文件。

代码以下:

#coding=utf-8
import  xml.dom.minidom

#翻开xml文档
dom = xml.dom.minidom.parse('abc.xml')

#取得文档元素东西
root = dom.documentElement
print root.nodeName
print root.nodeValue
print root.nodeType
print root.ELEMENT_NODE

mxl.dom.minidom 模块被用来处置xml文件,以是要先引入。

xml.dom.minidom.parse() 用于翻开一个xml文件,并将这个文件东西dom变量。

documentElement 用于取得dom东西的文档元素,并把取得的东西给root

每个结点爱游戏平台登录入口爱游戏平台登录入口它的nodeName,nodeValue,nodeType属性。

nodeName为结点名字。

nodeValue是结点的值,只对文本结点爱游戏平台登录入口用。

nodeType是结点的范例。catalog是ELEMENT_NODE范例

此刻爱游戏平台登录入口以下几种:

'ATTRIBUTE_NODE'
'CDATA_SECTION_NODE'
'COMMENT_NODE'
'DOCUMENT_FRAGMENT_NODE'
'DOCUMENT_NODE'
'DOCUMENT_TYPE_NODE'
'ELEMENT_NODE'
'ENTITY_NODE'
'ENTITY_REFERENCE_NODE'
'NOTATION_NODE'
'PROCESSING_INSTRUCTION_NODE'
'TEXT_NODE'


三、取得子标签

此刻要取得catalog的子标签以的标签name

代码以下:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
       <maxid>4</maxid>
       <login username="pytest" passwd='123456'>
              <caption>Python</caption>
             <item id="4">
                    <caption>测试</caption>
            </item>
    </login>
    <item id="2">
            <caption>Zope</caption>
    </item>
</catalog>

对晓得元素名字的子元素,能够利用getElementsByTagName方式取得:

代码以下:

#coding=utf-8
import  xml.dom.minidom

#翻开xml文档
dom = xml.dom.minidom.parse('abc.xml')

#取得文档元素东西
root = dom.documentElement

bb = root.getElementsByTagName('maxid')
b= bb[0]
print b.nodeName

bb = root.getElementsByTagName('login')
b= bb[0]
print b.nodeName

若何辨别不异标签名字的标签:

代码以下:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
       <maxid>4</maxid>
       <login username="pytest" passwd='123456'>
              <caption>Python</caption>
             <item id="4">
                    <caption>测试</caption>
            </item>
    </login>
    <item id="2">
            <caption>Zope</caption>
    </item>
</catalog>

<caption>和<item>标签不止一个若何辨别?

代码以下:

#coding=utf-8
import  xml.dom.minidom

#翻开xml文档
dom = xml.dom.minidom.parse('abc.xml')

#取得文档元素东西
root = dom.documentElement

bb = root.getElementsByTagName('caption')
b= bb[2]
print b.nodeName

bb = root.getElementsByTagName('item')
b= bb[1]
print b.nodeName

root.getElementsByTagName('caption') 取得的是标签为caption 一爱游戏平台登录入口标签,b[0]表现一爱游戏平台登录入口标签爱游戏平台登录入口的第一个;b[2] ,表现这一爱游戏平台登录入口标签爱游戏平台登录入口的第三个。

四、取得标签属性值

代码以下:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
       <maxid>4</maxid>
       <login username="pytest" passwd='123456'>
              <caption>Python</caption>
             <item id="4">
                    <caption>测试</caption>
            </item>
    </login>
    <item id="2">
            <caption>Zope</caption>
    </item>
</catalog>

<login>和<item>标签是爱游戏平台登录入口属性的,若何取得他们的属性?

代码以下:

#coding=utf-8
import  xml.dom.minidom

#翻开xml文档
dom = xml.dom.minidom.parse('abc.xml')

#取得文档元素东西
root = dom.documentElement

itemlist = root.getElementsByTagName('login')
item = itemlist[0]
un=item.getAttribute("username")
print un
pd=item.getAttribute("passwd")
print pd

ii = root.getElementsByTagName('item')
i1 = ii[0]
i=i1.getAttribute("id")
print i

i2 = ii[1]
i=i2.getAttribute("id")
print i

getAttribute方式能够取得元素的属性所对应的值。

五、取得标签对之间的数据

代码以下:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
       <maxid>4</maxid>
       <login username="pytest" passwd='123456'>
              <caption>Python</caption>
             <item id="4">
                    <caption>测试</caption>
            </item>
    </login>
    <item id="2">
            <caption>Zope</caption>
    </item>
</catalog>

<caption>标签对之间是稀爱游戏平台登录入口据的,若何取得这些数据?

取得标签对之间的数据爱游戏平台登录入口多种方式,

方式一:

代码以下:

#coding=utf-8
import  xml.dom.minidom

#翻开xml文档
dom = xml.dom.minidom.parse('abc.xml')

#取得文档元素东西
root = dom.documentElement

cc=dom.getElementsByTagName('caption')
c1=cc[0]
print c1.firstChild.data

c2=cc[1]
print c2.firstChild.data

c3=cc[2]
print c3.firstChild.data

firstChild 属性前往当选节点的第一个子节点,.data表现取得该节点人数据。

方式二:

代码以下:

#coding=utf-8
from xml.etree import ElementTree as ET
per=ET.parse('abc.xml')
p=per.findall('./login/item')

for oneper in p:
    for child in oneper.getchildren():
    &nbsp;   print child.tag,':',child.text


p=per.findall('./item')

for oneper in p:
    for child in oneper.getchildren():
        print child.tag,':',child.text

方式二爱游戏平台登录入口点庞杂,所援用模块也与后面的不一样,findall用于指定在爱游戏平台登录入口一级标签下起头遍历。

getchildren方式根据文档挨次前往一切子标签。并输入标签名(child.tag)和标签的数据(child.text)

实在,方式二的感化不在于此,它焦点功效是能够遍历某一级标签下的一切子标签。

PS:这里再为大师供给几款对xml操纵的在线东西供大师参考利用:

在线XML/JSON相互转换东西:

在线格局化XML/在线紧缩XML:

XML在线紧缩/格局化东西: