当前位置: 首页 > wzjs >正文

网站建设最新新闻优化排名软件

网站建设最新新闻,优化排名软件,让人做网站需要注意什么条件,江苏建设个人信息网站一、python 操作xml的方式介绍 查看全部包含“三种⽅法: ⼀是xml.dom. * 模块,它是W3CDOMAPI的实现,若需要处理DOMAPI则该模块很适合; ⼆是xml.sax. * 模块,它是SAXAPI的实现,这个模块牺牲了便捷性…

一、python 操作xml的方式介绍

    查看全部包含“三种⽅法:
    ⼀是xml.dom. * 模块,它是W3CDOMAPI的实现,若需要处理DOMAPI则该模块很适合;
    ⼆是xml.sax. * 模块,它是SAXAPI的实现,这个模块牺牲了便捷性来换取速度和内存占⽤,SAX是⼀个基于事件的API,这就意味着它可以“在空中”处理庞⼤数量的的⽂档,不⽤完全加载进内存;
    三是xml.etree.ElementTree模块(简称 ET),它提供了轻量级的Python式的API,相对于DOM来说ET 快了很多,⽽且有很多令⼈愉悦的API可以使⽤,相对于SAX来说ET的ET.iterparse也提供了 “在空中” 的处理⽅式,没有必要加载整个⽂档到内存,ET的性能的平均值和SAX差不多,但是API的效率更⾼⼀点⽽且使⽤起来很⽅便。

使用 xml.dom. * 模块:

from  xml.dom.minidom import Document
#创建一个文本
doc = Document()
#创建一个父节点
root = doc.createElement("root") 
#父节点加入文本
doc.appendChild(root)
#创建一个子节点
head = doc.createElement("head")
#子节点加入父节点
root.appendChild(head)
#创建一个属性
text1 = doc.createTextNode("1")
#创建一个子节点
code = doc.createElement("code")
#子节点加入父节点
code.appendChild(text1)
#子节点加入前子节点
head.appendChild(code)
#打印一下xml
print doc.toxml()
#上述输出节点输出为
#<?xml version="1.0" ?><root><head><code>1</code></head></root>
text2 = doc.createTextNode("2")
Msg = doc.createElement("Msg")
Msg.appendChild(text2)
head.appendChild(Msg)
#print doc.toxml()
#输出文件
with open("testq.arxml","w+") as f:#文件转码decode是为了保证输出的是UTF-8格式f.write(doc.toprettyxml(encoding = "UTF-8").decode("UTF-8"))f.close()

原文:Python学习(十四):Python如何创建一个xml文件_python生成xml文件-CSDN博客

最常用的是xml.etree.ElementTree模块。

二、ElementTree模块

2.1 解析xml文件,获取根节点,并读取节点内容

注意xml格式的内容应该没有xml格式声明的内容“<?xml version="1.0" encoding="UTF-8"?>”,如果有则会解析错误

from xml.etree import ElementTree as ET# 1、打开xml文件
tree =ET.parse(r"E:\testData\yy001.xml")
# 获xml文件的内容取根标签
root = tree.getroot()# 2、读取节点内容
# 2.1 获取根标签下的子标签
for child in root: 获取根节点下的子标签print(child.tag)      #  *.tag 是获取标签名字(字符串类型)print( child.attrib)  #  *.attrib是获取标签属性(字典类型)for node in child:   获取跟标签下子标签的子标签print(node.tag)print(node.attrib)print(node.text)   # *.text 获取标签文本
2.2 通标标签名直接获取标签(find,findall)

find()  此方法只能获取当前标签的下一级子标签,不能查询到下一级的下一级标签,且找到的是第一个相应的标签
findall() 此方法只能获取当前标签的下一级子标签,不能查询到下一级的下一级标签,但是找到下一级的所有符合名称的标签

2.3全文搜索标签名(类似xpath路径查找标签)
# 1、打开xml文件
from xml.etree import ElementTree as ETtree = ET.parse(r"E:\testData\yy01.xml")
# 获xml文件的内容取根标签
root = tree.getroot()
#print(root)# 2.1 通过标签名称获取标签 find()events_object = root.find("Events")  # 此种写法只能获取根标签下的一级子标签,即只能查询下一级标签,不能查询到下一级的下一级标签,**且找到的是第一个响应的标签**
print(events_object.tag, events_object.attrib)event_object = events_object.find("Event")   # 进一步获取跟标签下子标签的子标签
print(event_object.tag,event_object.attrib)# 2.2 通过标签名称获取标签 findall()events_objects = root.findall("Events")  # 此种写法只能获取根标签下的一级子标签,即只能查询下一级标签,不能查询到下一级的下一级标签,但是可以获取下一级所有符合名称的标签
for event_clee in events_objects:print(event_clee.tag, event_clee.attrib)event_object = event_clee.findall("Event")   # 进一步获取跟标签下子标签的子标签for relation_cell in event_object:print(relation_cell.tag, relation_cell.attrib)# 2.3 findall(xpath)Events_object = root.findall('.//Code')
Events_object1 = root.findall('.//Code[@curCode="010697059381010910N053000117230527"]')
Events_object2 = root.findall('.//*[@curCode="010697059381010910N053000117230527"]')
#注意 前面的“.”不能省略,
print(Events_object)
print(Events_object1)
print(Events_object2[0])# 2.4 全文搜索标签名为“Code”的标签Code_object = root.iter("Code")   全文搜索标签名为“Code”的标签
print(Code_object)
for code in Code_object:print(code.tag, code.attrib)
2.4 修改和删除节点
tree =ET.parse(r"E:\testData\yy01.xml")
root = tree.getroot()
#修改
relation_object = root.find("Events").find("Event").iter("Relation") # 获取第一个Events的一级子标签下的Relation子标签
for relation_cell in relation_object:relation_cell.set("productCode", "产品编码")    #  如果有相应属性,则修改属性值,没有则新增relation_cell.set("productCode2", "产品编码2")relation_cell.find("Batch").find("Code").text="追溯码"  # 注意:如果之前是短标签,增加文本属性后自动变为长标签。
# tree = ET.ElementTree(root)
tree.write("new.xml", encoding="utf-8",short_empty_elements=True)    # 如果文件不存在,则创建文件,如果文件已存在则修改响应内容-------------------------------------------------------------------------------------------------#删除root = tree.getroot()
# ####################错误的删除方式########################
# # 获取响应标签
# Event_object = root.find("Events").find("Event")
# # 删除相应标签
# root.remove(Event_object)   # 删除只能删除其子标签,不能删除其子标签下的子标签,因为relation_object是子标签下的子标签,因此此时删除失败################## 正确的删除方式#############################
Events_object = root.find("Events")
Event_object = Events_object.find("Event")
Events_object.remove(Event_object)# tree = ET.ElementTree(root)tree.write("new.xml", encoding="utf-8")    # 如果文件不存在,则创建文件,如果文件已存在则修改响应内容
注意:tree.write("newCreate.xml", xml_declaration=True,  encoding="utf-8", short_empty_elements=True)
# xml_declaration是否包含声明文件, encoding编码方式,short_empty_elements 规定是短标签(单标签)还是双标签

三、构建文件【xml中换行需要做特殊处理,默认都是在同一行】

方式1 (Element)

先创建各类标签,再建立标签之间关系

from xml.etree import ElementTree as ET
# 创建根标签
root = ET.Element("root")
# 创建一个标签tagName1
tagName1 = ET.Element("tagName1", {"tag1Attribute":"AttributeValue1"})
# 创建一个标签tagName2
tagName2 = ET.Element("tagName2", {"tag2Attribute":"AttributeValue2"})
# 创建一个标签tagName11
tagName11 = ET.Element("tagName11", {"tag11Attribute":"AttributeValue11"})
# 创建一个标签tagName12
tagName12 = ET.Element("tagName12", {"tag12Attribute":"AttributeValue12"})# 将标签tagName11和tagName12 添加的tagName1中作为tagName1的子标签
tagName1.append(tagName11)
tagName1.append(tagName12)# 将标签tagName1和tagName2 添加的root中作为root的子标签
root.append(tagName1)
root.append(tagName2)# 保存
tree = ET.ElementTree(root)tree.write("newCreate.xml", xml_declaration=True,  encoding="utf-8",short_empty_elements=True)
# xml_declaration是否包含声明文件, encoding编码方式,short_empty_elements 规定是短标签(单标签)还是双标签
<?xml version='1.0' encoding='utf-8'?>
<root><tagName1 tag1Attribute="AttributeValue1"><tagName11 tag11Attribute="AttributeValue11"/><tagName12 tag12Attribute="AttributeValue12"/></tagName1><tagName2 tag2Attribute="AttributeValue2"/>
</root>

方式2 (makeelement)

from xml.etree import ElementTree as ET# 创建根节点
root = ET.Element("family")# 创建一级子标签
son1 = root.makeelement("son", {"name":"son1"})
son2 = root.makeelement("son", {"name":"son2"})# 创建二级子标签
grandson1 = son1.makeelement("grandson1", {"name":"grandson1"})
grandson2 = son1.makeelement("grandson1", {"name":"grandson2"})# 将二级子标签与一级子标签关联
son1.append(grandson1)
son1.append(grandson2)# 将一级子标签与根标签关联
root.append(son2)
root.append(son1)tree = ET.ElementTree(root)
tree.write("../testData/neswfile.xml", xml_declaration=True, encoding="utf-8", short_empty_elements=False)
<?xml version='1.0' encoding='utf-8'?>
<family><son name="son2"></son><son name="son1"><grandson1 name="grandson1"></grandson1><grandson1 name="grandson2"></grandson1></son>
</family>

方式3

此种方式是在创建元素时直接建立相关关系

from xml.etree import ElementTree as ET# 创建根节点
root = ET.Element("family")# 创建一级子标签
son1 = ET.SubElement(root, "son", {"name":"son1"})
son2 = ET.SubElement(root,"son", {"name":"son2"})# 创建二级子标签
grandson1 = ET.SubElement(son1,"grandson1", {"name":"grandson1"})
grandson1.text="大孙子"
grandson2 = ET.SubElement(son1,"grandson1", {"name":"grandson2"})
grandson2.text="小孙子"tree = ET.ElementTree(root)
tree.write("../testData/neswfile.xml", xml_declaration=True, encoding="utf-8")
<?xml version='1.0' encoding='utf-8'?>
<family><son name="son1"><grandson1 name="grandson1">大孙子</grandson1><grandson1 name="grandson2">小孙子</grandson1></son><son name="son2"/>
</family>

根据xsd生成xml文件

import xmlschema
import json
from xml.etree.ElementTree import ElementTreemy_xsd = '<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note" type="xs:string"/> </xs:schema>'schema = xmlschema.XMLSchema(my_xsd)
data = json.dumps({'note': 'this is a Note text'})xml = xmlschema.from_json(data, schema=schema, preserve_root=True)ElementTree(xml).write('my_xml.xml')

对于更复杂的 xsd,我更喜欢使用 generateDS,它甚至可以为非常大的 xsd 文件创建非常非常可靠的类.
原文链接:https://blog.csdn.net/Mwyldnje2003/article/details/125819447

四、处理换行问题

def prettyXml(element, indent, newline, level=0):'''参数:elemnt为传进来的Elment类;indent用于缩进;newline用于换行;'''# 判断element是否有子元素if element:# 如果element的text没有内容if element.text == None or element.text.isspace():element.text = newline + indent * (level + 1)else:element.text = newline + indent * (level + 1) + element.text.strip() + newline + indent * (level + 1)# 此处两行如果把注释去掉,Element的text也会另起一行# else:# element.text = newline + indent * (level + 1) + element.text.strip() + newline + indent * leveltemp = list(element)  # 将elemnt转成listfor subelement in temp:# 如果不是list的最后一个元素,说明下一个行是同级别元素的起始,缩进应一致if temp.index(subelement) < (len(temp) - 1):subelement.tail = newline + indent * (level + 1)else:  # 如果是list的最后一个元素, 说明下一行是母元素的结束,缩进应该少一个subelement.tail = newline + indent * level# 对子元素进行递归操作prettyXml(subelement, indent, newline, level=level + 1)tree = ET.parse('filename')     
root = tree.getroot()
root.set('xmlns', 'http://ts.szse.cn/Fund')
prettyXml(root, '\t', '\n')

http://www.dtcms.com/wzjs/89072.html

相关文章:

  • 青岛建设集团苏州招聘信息网站域名注册后如何建网站
  • wordpress主题制作视频seo外链资源
  • 网站域名费用怎么做分录网页设计主要做什么
  • wordpress微信登录页面模板西安seo外包服务
  • java如何做网站品牌策划ppt案例
  • 比较好的微网站开发平台seo虚拟外链
  • 做时时彩网站牌照申请深圳seo技术
  • 海山网站建设电商培训机构哪家强
  • 四川省建设安全质量监理协会网站软件制作平台
  • 政府门户网站建设问题北京网
  • 实时国际新闻app淘宝seo什么意思
  • 北京公司做网站2022年可以打开的网址
  • 网站建设建站基本流程介绍西安自助建站
  • 外贸开发软件有哪些网站搜索排优化怎么做
  • 上海住房和城乡建设部网站非国产手机浏览器
  • 网站整合营销建设网络培训心得体会
  • 政府机关网站建设的依据百度推广首次开户需要多少钱
  • 淘宝客合伙人网站建设吉林关键词优化的方法
  • 唯样商城网站百度爱采购优化排名软件
  • 网站开发容易学吗广告网站留电话
  • 评析网站建设报价单百度一下 你就知道官网
  • 大型大型网站建设方案产品怎样推广有效
  • wordpress网站文章被插入很多黑链接无锡seo公司找哪家好
  • 福永专业外贸网站建设公司优化模型
  • 建设微网站需要多少钱广点通推广登录入口
  • 设计商城商务网站站长网站统计
  • 玉环城乡建设规划局网站电商运营
  • 广州门户网站制作电商沙盘seo裤子关键词
  • 如何仿做网站seo经理招聘
  • 北京哪个公司做网站app推广80元一单