XML文件???

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

里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xml

312

355

第一行是XML序言,<?xml version="1.0"?>。这一行代码会告诉解析器和浏览器,这个文件应该按照1.0版本的XML规则进行解析。

encoding = "utf-8"表示此XML文件采用utf-8的编码格式。

里面的标签都是自己命名定义的 只要符合这种包围的命名都可以 <>> 还有注意缩进。

解析xml文件第一步:

#coding=utf-8

importxml.dom.minidom#打开xml文档

dom = xml.dom.minidom.parse('roi.xml')

#得到xml文档元素对象

root = dom.documentElement

获得了对象之后就可以运用一些对元素标签操作的语法,每一个像<>>这样的标签 都是一个结点,而每一个结点都有它的nodeName,nodeValue,nodeType属性,写法是root.nodeName   要注意了这些语法对大小写都是敏感的,错一个大小写都是不行的,一般都符合驼峰的格式。

顾名思义  nodename 就是结点的名字 也就是标签名,nodevalue 就是结点里面的值 或者数据  不过这个只对文本结点有效。

第二步对XML文件进行操作,获取其中的值:

#coding=utf-8

import xml.dom.minidom

#打开xml文档

dom = xml.dom.minidom.parse('roi.xml')

#得到xml文档元素对象

root = dom.documentElement

#开始操作

#获取readSession标签集并且继续获取标签集中第一个readSession下的xCoord标签集

roiX=root.getElementsByTagName('readingSession')[0].getElementsByTagName('roi')[0].getElementsByTagName('xCoord')

#获取到了xCoord第一子集 的子元素的数据 将其打印 firstChild 在这里代表xCoord的文本内容 也是一个文本结点 将文本结点的数据打印

print roiX[0].firstChild.data

#还可以获取长度

xLen = root.getElementsByTagName('readingSession').length

print xLen

getElementsByTagName(标签名)这个函数就是用来通过标签名字获取

通过getElementsByTagName(标签名)获取到了标签元素对象  如果这个标签有id属性=“”也可以获取这个标签中的ID, 注意到xCoord中有一个id属性   直接ID=roiX.getAttribute("id")  就可以获取了

这里还有很多对其操作的方法  就不详细介绍了。

接下来看看用Python遍历文件:

importos

#这是我的文件目录路径

path = 'C:\Program Files\Java\jre-9.0.1\lib\jfr'

#将os.walk在元素中提取的值,分别放到root(根目录),dirs(目录名),files(文件名)中。for root, dirs, files inos.walk(path):print( "files =", files)print len(files)

非常简单的代码,这里我只对files文件名进行遍历打印  其他的用法大家看到这个语法就可以自己尝试了。

接下来进入正题  遍历文件解析XML文件 提取坐标集存入文档:

先看一部分简单版本的XML文件,目标就是将其中X,Y坐标提取存入文件          用途方便后来对数字图像处理的操作

3.12

540461523

Nodule 001

5

1

6

3

3

3

4

5

5

-125.000000

1.3.6.1.4.1.14519.5.2.1.6279.6001.110383487652933113465768208719

TRUE

312

355

311

356

310

357

309

357

308

358

接下来看看PYTHON部分的代码:

# -*- coding: UTF-8 -*-

"""

Spyder Editor

This is a temporary script file.

"""

#from __future__ import divition

import xml.dom.minidom

import os

path = 'C:\Program Files\Java\jre-9.0.1\lib\jfr'

#遍历文件夹获取文件名返回数组

for root, dirs, files in os.walk(path):

print( "files = ", files)

print len(files)

#通过文件名数组,不断的打开XML文件提取坐标

for f in range(len(files)):

fpName = files[f]

#获取XML文件的除了xml三个后缀之前的名字

nn =str(fpName[0:3])

对每个XML文件都以相同的名字打开 W的方式 没有文件的话 会自动创建一个出来

fp = open(nn+".txt","w")

print nn

print fpName

#打开XML文档

dom = xml.dom.minidom.parse(fpName)

#得到文档元素对象

root = dom.documentElement

#获取标签集并提取坐标存入文档

drLen= root.getElementsByTagName('readingSession').length

if(drLen != 0):

for s in range(drLen):

drText ="\n\nDR"+str(s+1)+"\n\n"

fp.write(drText)

bb = root.getElementsByTagName('readingSession')[s].getElementsByTagName('roi').length

for i in range(bb):

roiX = root.getElementsByTagName('readingSession')[s].getElementsByTagName('roi')[i].getElementsByTagName('xCoord')

xLen = root.getElementsByTagName('readingSession')[s].getElementsByTagName('roi')[i].getElementsByTagName('xCoord').length

roiY = root.getElementsByTagName('readingSession')[s].getElementsByTagName('roi')[i].getElementsByTagName('yCoord')

yLen = root.getElementsByTagName('readingSession')[s].getElementsByTagName('roi')[i].getElementsByTagName('yCoord').length

xText = "\n 第"+str(i+1)+"个roi的X坐标\n"

fp.write(xText)

#将X坐标全部存入

roiData =""

for j in range(xLen):

roiData+= str(roiX[j].firstChild.data)+","

fp.write(roiData)

yText ="\n Y坐标\n"

fp.write(yText)

for k in range(yLen) :

roiData += str(roiX[j].firstChild.data)+","

fp.write(roiData)

fp.close()

以上代码完成后就能形成一个这样的文件:

如果是遍历解析的话  大概就会形成这样的一堆文件:

大家好我是飞机,是一个想成为全栈工程师的男人。

我觉得最美的情话就是:

我这辈子看过很多代码,都没有你好看。

希望以后能变成:

我这辈子写过很多代码,都没有你好看。

python读取xml标注坐标_遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件...相关推荐

  1. python动态交互式图表库_五个创建交互式图表的Python库

    数据可视化专家Andy Kirk说过,数据可视化分为两类:探索性可视化图表和解释性可视化图表.解释性可视化图表的目标是进行描述--它们是根据对事物表面的关键线索而被仔细构造出来的. 另一方面,探索性可 ...

  2. Dom方法,解析XML文件

    Dom方法,解析XML文件的基本操作 1 package com.demo.xml.jaxp; 2 3 import java.io.IOException; 4 5 import javax.xml ...

  3. php 对象转xml字符串_php方法simplexml_load_string()解析xml转数组失败

    用php方法simplexml_load_string()解析xml成数组失败,总是返回false. 找了很多方法,终于知道在php用simplexml_load_string()解析xml成数组的时 ...

  4. python 读取excel太慢_使用xlrd读取django批量excel文件太慢

    我正在加载django模型中的excel文件,并使用xlrd读取并存储在数据库中. 加载大约20k行需要1分钟.但是我的文件有160k行,大约需要8分钟,所以我需要将这种大容量文件的读取和存储时间减少 ...

  5. python解析xml文件选用模块_python-minidom模块【解析xml】

    1,xml的文档结构 1.1,XML文档包括XML头信息和XML信息体 1.1.1,XML文档头信息 它表明了此XML文档所用的版本,编码方式.有些复杂的还有一些文档类型的定义(DOCTYPE),用于 ...

  6. python 读取地震道头数据_【Python】OGR库(1):读取矢量数据

    OGR库是一个非常流行的处理地理空间矢量数据的开源库.它可以读取丰富的数据格式,允许用户进行几何处理.属性表操作.数据分析,是个非常强大的开源GIS库.目前OGR已集成在GDAL库中,可以说是GIS的 ...

  7. python读取oracle数据库性能_用python对oracle进行简单性能测试

    一.概述 dba在工作中避不开的两个问题,sql使用绑定变量到底会有多少的性能提升?数据库的审计功能如果打开对数据库的性能会产生多大的影响?最近恰好都碰到了,索性做个实验. sql使用绑定变量对性能的 ...

  8. python读取hadoop库数据_使用Python访问HDFS

    最近接触到大数据,对于Skpark和Hadoop的料及都停留在第一次听到这个名词时去搜一把看看大概介绍免得跟不上时代的层次. 在实际读了点别人的代码,又自己写了一些之后,虽然谈不上理解加深,至少对于大 ...

  9. python读取路径太长_路径名太长,无法打开?

    常规DOS路径限制为MAX_PATH(260)个字符,包括字符串的终止字符NUL.通过使用以\\?\前缀开头的扩展长度路径,可以超过此限制.此路径必须是完全限定的Unicode字符串,并且只能使用反斜 ...

最新文章

  1. 青少年编程竞赛交流群周报(第039周)
  2. python-字典dict、去除重复set
  3. 【转载】从多项式曲线拟合到模式识别的相关概念
  4. C#最佳工具集合:IDE、分析、自动化工具等
  5. Three.js 新旧版本区别
  6. 有ul没有字html,HTML ul 标签
  7. matlab计算复活节概率,复活节日期的计算方法
  8. 如何将namedtuples序列化为JSON
  9. 元宇宙会成为IPv6的拐点吗?
  10. 图解VS2010打包全过程(转)
  11. 定义一个内核panic问题
  12. 使用wps插件,实现word转PDF
  13. 数字电视-DVB介绍
  14. 如何使用光学检测汽车前仪表盘玻璃
  15. 90后美女学霸传奇人生:出身清华姚班,成斯坦福AI实验室负责人高徒
  16. CapstoneCS5211,CS5212,CS5256,CS5811,CS5288,……型号大全
  17. Delphi 华氏度和摄氏度转换(亲测可用)
  18. EOJ 2527 Fj haozi【dfs】
  19. opencv-python 对极几何
  20. Asp.net Ajax框架教程[教程下载]

热门文章

  1. Angular 2+ 监听路由变化动态设置页面标题
  2. lintcode-34-N皇后问题 II
  3. 学习事务,视图和索引
  4. IE6/IE7下:inline-block不兼容的问题
  5. Ubuntu13.04 配置smb服务器-new
  6. 《转》atomic assign retain
  7. ConcurrentModificationException 问题
  8. SQL时间格式转换CONVERT_GETDATE()
  9. 毕业以来,今天第一次领到工资,好兴奋哪
  10. 深度学习(计算机视觉)面试中问题(二)