xml文档的读取
#! /usr/bin/env python3
# -*- coding:utf-8 -*-
import xml.dom.minidom #该模块被用来处理xml文件
#打开xml文档
dom=xml.dom.minidom.parse('e:/pcf10.xml')
#xml.dom.minidom模块被用来处理xml文件,并将这个文件对象赋值给dom变量。
#documentElement用于得到dom对象的文档元素,并把获得的对象给root
#得到文档元素对象
root=dom.documentElement
print (root.nodeName)
print (root.nodeValue)
print (root.nodeType)
print (root.ELEMENT_NODE)
'''
mapper
None
1
1
'''
#每个结点都有它的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
'''
#不同的节点类型有不同的值,例CDATA_SECTION_NODE=4,元素节点ELEMENT_NODE=1,属性节点ATTRIBUTE_NODE=2,文本节点TXT_NODE=3,注释节点COMMENT_NODE=8
#获得子标签
#对于知道标签名字的子元素,可以使用getElementsByTagName方法获取:
bb=root.getElementsByTagName('select')
#bb 就是root的指定标签select的子节点列表 ,node为结点的意思,bb[0]表示一组标签中的第一个节点;bb[2]表示这一组标签中的第三个节点
b=bb[0]
b1=bb[1]
b2=bb[2]
print(b.nodeName)
print (b.nodeValue)
print (b1.nodeName)
print (b2.nodeName)
'''
select
None
select
select
'''
#root.getElementsByTagName('select')获得的是标签为select的节点集合
itemlist=root.getElementsByTagName('select')
item=itemlist[0] #item 为文件中第一个select结点
un=item.getAttribute("id") #获得节点属性值
print (un)
print('firstChild\'s nodeType is : ',root.firstChild.nodeType) #用node.nodeType可返回节点类型。
print(root.firstChild.nodeName)
print('item\'s second node\'s type is : ', item.childNodes[1].nodeType)
'''
pstk0001
firstChild's nodeType is : 3
item's second node's type is : 4
'''
#getAttribute方法可以获得元素的属性所对应的值。
import re
modl=re.compile('(pgenius.)([a-z_A-Z]{2,50})') #()在返回结果分组显示
tableset=set() #set为集合类数据,不含重复值,可进行交、并、差等集合运算。
f=open('e:/work/w.txt','w') #有则打开,无则创建w.txt.
for i in itemlist:
tableset1=set()
tableset2=set()
content=[n.data.strip() for n in i.childNodes if n.nodeType==4][0]
#childNodes 返回的是节点的子节点集合,包含元素节点、文本节点、属性节点、注释节点等,事实上,文档里几乎每一样东西都是一个节点,连空格、换行符都
#会被解释成节点。而且都包含在childNodes属性所返回的数组中。
tabless=modl.findall(content) #返回文件中符合匹配模式的结果集
for n,m in tabless:
tableset1.add(n)
tableset2.add(m)
tableset.add(m)
tableset1=list(tableset1)
tableset2=list(tableset2)
if len(tableset1):
print(i.getAttribute("id"))
f.write(i.getAttribute("id"))
f.write('\n')
print(tableset1)
f.write('\n')
print(tableset2)
for j in tableset2:
f.write(j)
f.write('\n')
print(tableset)
f.close()
#print([n.data.strip() for n in itemlist[1].childNodes if n.nodeType==4]) #.strip去掉的是开头和结尾的空格
#获得标签对之间的数据,如 <caption>测试</caption> 中的“测试”。
print(item.firstChild.data)
#返回值为空
#firstChild属性返回被选结点的第一个子结点,.data表示获取该节点的的数据
#firstChild返回节点类型为元素节点nodeType=1.
xml文档的读取的更多相关文章
- 从多个XML文档中读取数据用于显示webapi帮助文档
前言: 你先得知道HelpPageConfig文件,不知道说明你现在不需要这个,所以下文就不用看了,等知道了再看也不急.当然如果你很知道这个,下文也不用看了,因为你会了. 方法一: new XmlDo ...
- net9:图片变成二进制流存入XML文档,从XML文档中读出图片以及从XML文档中读取并创建图片文件
原文发布时间为:2008-08-10 -- 来源于本人的百度文章 [由搬家工具导入] fileToXml类: using System;using System.Data;using System.C ...
- 【JAVA与DOM4J实现对XML文档的CRUD操作】
一.简介 1.网上下载DOM4J 1.6.1压缩包,解压开之后,发现几个目录和一个jar文件,jar文件是必须的文件其它目录: docs目录:帮助文档的目录,单击index.html: Quick s ...
- java解析xml文档(dom)
DOM解析XML文档 读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵. DOM解析的特性就是读取xml文件 ...
- 使用Dom4j创建xml文档
我们学习dom4j为的就是使用它来创建XML文档.读取文档等更为方便,下面通过一个实例来展示如何通过dom4j去创建XML文档.展示怎样通过两种方式去创建元素,可以直接通过addElement方法返回 ...
- XmlReader和XElement组合之读取大型xml文档
简介 在.NET framework 中存在大量操作xml数据的类库和api,但在.NET framework 3.5后我们的首选一般就是linq to xml. linq to xml操作xml数据 ...
- Java获取XML节点总结之读取XML文档节点
dom4j是Java的XML API,用来读写XML文件的.目前有很多场景中使用dom4j来读写xml的.要使用dom4j开发,需要下载导入dom4j相应的jar文件.官网下载:http://www. ...
- 详解xml文件描述,读取方法以及将对象存放到xml文档中,并按照指定的特征寻找的方案
主要的几个功能: 1.完成多条Emp信息的XML描述2.读取XML文档解析Emp信息3.将Emp(存放在List中)对象转换为XML文档4.在XML文档中查找指定特征的Emp信息 dom4j,jaxe ...
- 读取XML文档结构并写入内容
1.在项目中新建XML文档结构.xsd文件,在其中添加相应的节点. 2.读取文档结构并写入内容 string initFileName = @"D:\Config.xml"; Da ...
随机推荐
- (4)进程---daemon守护线程和join阻塞
join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行,那么在调用这个线程时可以使用被调用 ...
- if标签
If标签如果php中if语句的作用,if是用于流程控制的. 在ThinkPHP中if标签也是用于流程控制的. If标签的语法格式: <if condition=’条件表达式’> 输出结果1 ...
- spring cloud: Hystrix(三):健康指数 health Indicator
spring cloud: Hystrix(三):健康指数 health Indicator ribbon+hystrix 当使用Hystrix时(spring-cloud-starter-hystr ...
- vue 基础(一)
一 vue.js的M-V-VM思想 MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式. 1.Model指代的就是vue对象的data属性里面的数据.这里的数 ...
- django 中基于类的视图
django 视图 分为两种: 1. FBV 基于函数的视图 function based view 2. CBV 基于类的视图 class based ...
- Wannafly挑战赛23B游戏
https://www.nowcoder.com/acm/contest/161/B 题意:两个人van游戏,n堆石子,每次只能取这堆石子数目的因子个数,没得取的人输,问第一个人的必胜策略有多少种 题 ...
- java 类加载机制和反射机制
一.类的加载机制 jvm把class文件加载到内存,并对数据进行校验.解析和初始化,最终形成jvm可以直接使用的java类型的过程.(1)加载 将class文件字节码内容加载到内存中, ...
- js动态修改title
问题描述: 由于微信浏览器只在页面首次加载时初始化了标题title,之后就没有再监听 window.title的change事件.所以这里修改了title后,立即创建一个请求,加载一个空的iframe ...
- ireport表单制作
关于ireport的表单制作,可参考http://blog.csdn.net/wlwlwlwl015/article/details/51312853 这里主要讲解下如何在表单中加入table,如何让 ...
- Wannafly挑战赛29-A/B
链接:https://ac.nowcoder.com/acm/contest/271/A来源:牛客网 御坂美琴 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言 ...