#coding=utf-8

#通过minidom解析xml文件
import xml.dom.minidom as xmldom
import os
'''
XML文件读取
<?xml version="1.0" encoding="utf-8"?>
<catalog>
<maxid>4</maxid>
<login username="pytest" passwd='123456'>dasdas
<caption>Python</caption>
<item id="4">
<caption>测试</caption>
</item>
</login>
<item id="2">
<caption>Zope</caption>
</item>
</catalog> '''
'''
x_path="E:\\doc\\项目文档\\广东\\拓扑图\\test.xml"
xmlfilepath = os.path.abspath(x_path)
print ("xml文件路径:", xmlfilepath) # 得到文档对象
domobj = xmldom.parse(xmlfilepath)
print("xmldom.parse:", type(domobj))
# 得到元素对象
elementobj = domobj.documentElement
print ("domobj.documentElement:", type(elementobj)) #获得子标签
subElementObj = elementobj.getElementsByTagName("login")
print ("getElementsByTagName:", type(subElementObj)) print (len(subElementObj))
# 获得标签属性值
print (subElementObj[0].getAttribute("username"))
print (subElementObj[0].getAttribute("passwd")) #区分相同标签名的标签
subElementObj1 = elementobj.getElementsByTagName("caption")
for i in range(len(subElementObj1)):
print ("subElementObj1[i]:", type(subElementObj1[i]))
print (subElementObj1[i].firstChild.data) #显示标签对之间的数据
''' x_path="E:\\doc\\项目文档\\广东\\拓扑图\\index.do.xml"
nodes=list()
xmlfilepath = os.path.abspath(x_path)
def findNodeIndex(node):
for i in range(len(nodes)):
if(nodes[i]==node):
return str(i) # +":"+nodes[i] print ("xml文件路径:", xmlfilepath)
# 得到文档对象
domobj = xmldom.parse(xmlfilepath)
print("xmldom.parse:", type(domobj))
# 得到元素对象
elementobj = domobj.documentElement
#print ("domobj.documentElement:", type(elementobj))
subElementObj = elementobj.getElementsByTagName("data")
print(len(subElementObj))
for i in range(len(subElementObj)):
if(subElementObj[i].getAttribute("type")=='twaver.Node'):
sub2=subElementObj[i].getElementsByTagName("p")
for j in range(len(sub2)):
if(sub2[j].getAttribute("n")=='name'):
node=sub2[j].firstChild.data.replace('...','')
print("{name:'",node,"',draggable: true,},")
nodes.append(node)
print("nodes len:",len(nodes))
for i in range(len(subElementObj)):
if(subElementObj[i].getAttribute("type")=='twaver.Link'):
sub3=subElementObj[i].getElementsByTagName("c")
for j in range(len(sub3)):
node=sub3[j].firstChild.data.replace('...','')
iNode=findNodeIndex(node)
if(sub3[j].getAttribute("n")=='aNode'):
#print(sub3[j].firstChild.data ,' ',iNode, end='')
print('{source:',iNode, end='')
elif(sub3[j].getAttribute("n")=='zNode'):
#print(sub3[j].firstChild.data,' ',iNode)
print(",target:",iNode,"},")

python从XML里取数,遍历等的更多相关文章

  1. 用Python提取XML里的内容,存到Excel中

    最近做一个项目是解析XML文件,提取其中的chatid和lt.timestamp等信息,存到excel里. 1.解析xml,提取数据 使用python自带的xml.dom中的minidom(也可以用l ...

  2. 遍历select搜索结果,只取数字标key值,防止重复

    //遍历select搜索结果,只取数字标key值,防止重复 foreach ($row as $key => $value) { if (is_int($key)) { echo $value; ...

  3. hibernate部分源码解析and解决工作上关于hibernate的一个问题例子(包含oracle中新建表为何列名全转为大写且通过hibernate取数时如何不用再次遍历将列名(key)值转为小写)

    最近在研究系统启动时将数据加载到内存非常耗时,想着是否有办法优化!经过日志打印测试发现查询时间(查询时间:将数据库数据查询到系统中并转为List<Map>或List<*.Class& ...

  4. python 处理xml

    XML XML指可扩展标记语言(Extensible Markup Language) XML被设计用于结构化.存储和传输数据 XML是一种标记语言,很类似于HTML XML没有像HTML那样 ...

  5. python实现XML解析的三种方法

    python实现XML解析的三种方法 三种方法:一是xml.dom.*模块,它是W3C DOM API的实现,若需要处理DOM API则该模块很适合:二是xml.sax.*模块,它是SAX API的实 ...

  6. python解析xml之lxml

    虽然python解析xml的库很多,但是,由于lxml在底层是用C语言实现的,所以lxml在速度上有明显优势.除了速度上的优势,lxml在使用方面,易用性也非常好.这里将以下面的xml数据为例,介绍l ...

  7. python写xml文件

    为了便于后续的读取处理,这里就将信息保存在xml文件中,想到得到的文件如下: 1 <?xml version="1.0" encoding="utf-8" ...

  8. Python之xml文档及配置文件处理(ElementTree模块、ConfigParser模块)

    本节内容 前言 XML处理模块 ConfigParser/configparser模块 总结 一.前言 我们在<中我们描述了Python数据持久化的大体概念和基本处理方式,通过这些知识点我们已经 ...

  9. Python实现XML文件解析

    1. XML简介 XML(eXtensible Markup Language)指可扩展标记语言,被设计用来传输和存储数据,已经日趋成为当前许多新生技术的核心,在不同的领域都有着不同的应用.它是web ...

随机推荐

  1. lettcode21. Merge Two Sorted Lists

    lettcode21. Merge Two Sorted Lists Merge two sorted linked lists and return it as a new list. The ne ...

  2. python测试开发django-56.模板渲染markdown语法+代码高亮

    前言 上一篇已经实现在xadmin后台编辑markdown语法的文档,编辑完成之后发布博客,在前端html能把markdown语法显示出来. 主要思路是先从数据库把markdown的代码读出来,导入m ...

  3. 【性能提升神器】STRAIGHT_JOIN

    今天给大家下另一个性能提升神器-STRAIGHT_JOIN,在数据量大的联表查询中灵活运用的话,能大大缩短查询时间. 首先来解释下STRAIGHT_JOIN到底是用做什么的: STRAIGHT_JOI ...

  4. QIDO-RS - Search

    6.7.1 QIDO-RS - Search 6.7.1.1 Request The specific resources to be used for the search actions shal ...

  5. 为什么样本方差分母是n-1

    https://blog.csdn.net/qq_39521554/article/details/79633207 为什么样本方差的分母是n-1?为什么它又叫做无偏估计? 至于为什么是n-1,可以看 ...

  6. 命令行:增强版 | Linux 中国

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/F8qG7f9YD02Pe/article/details/83542677 以下就是我如今使用的用于 ...

  7. JavaScript中Object值合并方法

    原文:https://www.cnblogs.com/fullstack-yang/p/8085206.html ------------------------------------ 前言:在日常 ...

  8. Nginx配置,413 Request Entity Too Large错误解决

    今天有同事找我,说图片上传之后,不知道去哪里了.分析了一下问题,找到原因之后做了处理,这里简要记录一下. 问题原因: 1.首先后台log并无错误信息: 2.捡查了一下浏览器,发现network中有报错 ...

  9. win7&win10 右键添加 cmd

    修改注册表,位置有 3 个,重复即可: 桌面右键: HKEY_CLASSES_ROOT\Directory\Background\shell 文件夹右键:HKEY_CLASSES_ROOT\Direc ...

  10. C#/.NET基础视频[2018年][195集完]

    B站观看地址-无广告观看 https://www.bilibili.com/video/av21896829/ 前一两集 声音有点大 ,可以调大一点音量. 百度网盘下载地址 https://pan.b ...