首页 > 编程知识 正文

python操作xml创建网站的简单介绍

时间:2023-12-10 13:48:24 阅读:314054 作者:MEUL

本文目录一览:

如何用Python创建生成xml文档文件的方法

1、内存数据产生

2、产生xml内存对象(也就是DOM树)

3、产生根对象

4、往根对象里加数据

5、把xml内存对象写到文件

python中xml具体怎么用

pipinstalllxmlpython2.7.9自带pip安装工具。看下面图片,图中显示本人电脑已经安装好了。1.直接copy下载的模块文件中已经有了模块的文件,有些模块只有一个文件,比如较早版本的BeautifulSoup,有些是一个文件夹,比如新版本BeautifulSoup就是一个叫做bs4的文件夹。把这些文件直接copy到你的python路径下的/Lib/site-packages文件夹中,比如C:/Python27/Lib/site-packages。之后就可以在程序里直接引用了:importBeautifulSoup或者frombs4importBeautifulSoup这是根据你放置的文件位置不同而决定的。网上有人说直接放在Lib文件夹中就可以了。的确这样也行,但Lib文件夹中都是自带的模块,看一下就会发现我们用过的random、re等模块的代码文件。而外部模块一般放在site-packages文件夹中。2.setup.py很多模块里都附带了setup.py文件,有同学直接双击了,然后发现没有用。它的使用方法是从命令行去到setup.py所在的路径下,运行pythonsetup.pyinstall仔细看一下安装时输出的信息可以发现,在线学习这个命令做的事情其实也就是帮你把模块的代码copy到site-packages文件夹。3.setuptools使用setuptools可以直接根据模块名称来自动下载安装,不需要自己再去寻找模块的安装文件。不过在使用之前,你得先安装setuptools自身。windows平台的32位python,可以直接下载setuptools的exe文件安装。

如何使用python生成xml

最近要用python生成一个xml格式的文件。因为有一些内容是中文,原来的xml文件中使用了CDATA 的部分。 而之前的python程序所用的库中没有 创建这个区域的方法。无奈研究了大半天。 最后用了 from lxml import etree 这个库的方法。 这里将可运行的 python程序分享出来。 供大家参考。 经过测试,这段代码是可以直接运行生成xml格式内容的。

1 # -*- coding:utf-8 -*-

2 import sys

3 import time

4 import string

5

6 from lxml import etree

7

8

9 #设置默认字符集为UTF8 不然有些时候转码会出问题

10 default_encoding = 'utf-8'

11 if sys.getdefaultencoding() != default_encoding:

12 reload(sys)

13 sys.setdefaultencoding(default_encoding)

14

15 def create_xml():

16

17 data = etree.Element("data")

18 #1 interface_version

19 interface_version_txt = '5'

20 interface_version = etree.SubElement(data, 'interface_version')

21 interface_version.text = interface_version_txt

22 #2 site

23 site_txt = ''

24 site = etree.SubElement(data, 'site')

25 site.text = site_txt

26 #3 lastmod

27 lastmod_txt = time.strftime('%Y-%m-%d', time.localtime())

28 lastmod = etree.SubElement(data, 'lastmod')

29 lastmod.text = lastmod_txt

30 #5 app

31 app = etree.SubElement(data, 'app')

32 #6 title

33 title_txt = u'%s' % '真心话大冒险'

34 title_txt = etree.CDATA(title_txt)

35 title = etree.SubElement(app, 'title')

36 title.text = title_txt

37 #7 appid

38 appid = etree.SubElement(app, 'appid')

39 appid.text = '%s' % '222'

40

41 dataxml = etree.tostring(data, pretty_print=True, encoding="UTF-8", method="xml", xml_declaration=True, standalone=None)

42 print dataxml

43

44

47 if __name__ == '__main__':

48 create_xml()

用python怎么操作xml文件内容

一、什么是xml?

xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

abc.xml

复制代码代码如下:

?xml version="1.0" encoding="utf-8"?

catalog

maxid4/maxid

login username="pytest" passwd='123456'

captionPython/caption

item id="4"

caption测试/caption

/item

/login

item id="2"

captionZope/caption

/item

/catalog

Ok ,从结构上,它很像我们常见的HTML超文本标记语言。但他们被设计的目的是不同的,超文本标记语言被设计用来显示数据,其焦点是数据的外观。它被设计用来传输和存储数据,其焦点是数据的内容。

那么它有如下特征:

首先,它是有标签对组成,aa/aa

标签可以有属性:aa id='123'/aa

标签对可以嵌入数据:aaabc/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

maxid4/maxid

login username="pytest" passwd='123456'

captionPython/caption

item id="4"

caption测试/caption

/item

/login

item id="2"

captionZope/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

maxid4/maxid

login username="pytest" passwd='123456'

captionPython/caption

item id="4"

caption测试/caption

/item

/login

item id="2"

captionZope/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

maxid4/maxid

login username="pytest" passwd='123456'

captionPython/caption

item id="4"

caption测试/caption

/item

/login

item id="2"

captionZope/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

maxid4/maxid

login username="pytest" passwd='123456'

captionPython/caption

item id="4"

caption测试/caption

/item

/login

item id="2"

captionZope/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():

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)

其实,方法二的作用不在于此,它核心功能是可以遍历某一级标签下的所有子标签。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。