【304】python专题-读取xml文件
1. 读取标签内的文本(Python)
如下的 xml 文件一部分,读取里面的经纬度
<?xml version="1.0" encoding="UTF-8" ?>
<ProductMetaData>
<SatelliteID>GF1</SatelliteID>
<SensorID>WFV1</SensorID>
<ReceiveTime>2017-05-27 03:12:39</ReceiveTime>
<OrbitID>22015</OrbitID>
<TopLeftLatitude>35.7554</TopLeftLatitude>
<TopLeftLongitude>120.221</TopLeftLongitude>
<TopRightLatitude>35.3767</TopRightLatitude>
<TopRightLongitude>122.539</TopRightLongitude>
<BottomRightLatitude>33.5274</BottomRightLatitude>
<BottomRightLongitude>122.064</BottomRightLongitude>
<BottomLeftLatitude>33.9045</BottomLeftLatitude>
<BottomLeftLongitude>119.797</BottomLeftLongitude>
</ProductMetaData>
实现代码如下所示:
lat1 获取 <TopLeftLatitude>35.7554</TopLeftLatitude> 的数据
lon1 获取 <TopLeftLongitude>120.221</TopLeftLongitude> 的数据
import xml.dom.minidom
dom = xml.dom.minidom.parse(filepath_xml) # parse an XML file by name, type is ducument tmp = dom.getElementsByTagName('TopLeftLatitude') # return a list, type is node
lat1 = tmp[0].firstChild.data # The content of the text node as a string.
tmp = dom.getElementsByTagName('TopLeftLongitude')
lon1 = tmp[0].firstChild.data
代码语法说明:
xml.dom.minidom:通过 import 后可以进行后续的操作 xml.dom.minidom.parse:返回值为一个 Document_Node,参数为 XML 文件的路径
Document.getElementsByTagName:返回值为 Element_Node 列表/数组,根据标签名搜索所有的标签
Node.firstChild:本例中返回值为第一个 Text_Node,Node 是基础对象,firstChild 返回第一个子节点
Text.data:返回值为 Test_Node 对应的 String(使用 nodeValue 属性也可以)
DOM 的对象说明(Python)
- Node Objects:文档中大多数对象的基本接口。(方法在其他对象都可以通用)
- Document Objects:表示整个文档的对象。
- Element Objects:文档层次结构中的元素节点。
- Text Objects:包含文档中文本内容的节点。
XML DOM 属性
一些典型的 DOM 属性:
- x.nodeName - x 的名称
- x.nodeValue - x 的值
- x.parentNode - x 的父节点
- x.childNodes - x 的子节点
- x.attributes - x 的属性节点
注释:在上面的列表中,x 是一个节点对象。
XML DOM 方法
- x.getElementsByTagName(name) - 获取带有指定标签名称的所有元素
- x.appendChild(node) - 向 x 插入子节点
- x.removeChild(node) - 从 x 删除子节点
注释:在上面的列表中,x 是一个节点对象。
参考:XML DOM 节点信息
节点的属性
在 XML 文档对象模型 (DOM) 中,每个节点都是一个对象。
对象拥有方法(功能)和属性(关于对象的信息),并可通过 JavaScript 进行访问和操作。
三个重要的 XML DOM 节点属性是:
- nodeName
- nodeValue
- nodeType
nodeName 属性
nodeName 属性规定节点的名称。
- nodeName 是只读的
- 元素节点的 nodeName 与标签名相同
- 属性节点的 nodeName 是属性的名称
- 文本节点的 nodeName 永远是 #text
- 文档节点的 nodeName 永远是 #document
nodeValue 属性
nodeValue 属性规定节点的值。
- 元素节点的 nodeValue 是 undefined
- 文本节点的 nodeValue 是文本自身
- 属性节点的 nodeValue 是属性的值
nodeType 属性
nodeType 属性规定节点的类型。
nodeType 是只读的。
最重要的节点类型是:
| 元素类型 | 节点类型 |
|---|---|
| 元素 | 1 |
| 属性 | 2 |
| 文本 | 3 |
| 注释 | 8 |
| 文档 | 9 |
参考:XML DOM 定位节点
定位 DOM 节点
通过节点间的关系访问节点树中的节点,通常称为定位节点 ("navigating nodes")。
在 XML DOM 中,节点的关系被定义为节点的属性:
- parentNode:父节点
- childNodes:子节点们
- firstChild:首个子节点
- lastChild:最末子节点
- nextSibling:下一个同级节点
- previousSibling:上一个同级节点
下面的图像展示了 books.xml 中节点树的一个部分,并说明了节点之间的关系:

【304】python专题-读取xml文件的更多相关文章
- python专题-读取xml文件
关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...
- python读取xml文件
关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...
- 【Python实例一】使用minidom读取xml文件
前言:最近刚在廖雪峰老师的网站里学习了Python的基础内容,想着循序渐进地找点实例练练手,网上看到有很多相关资料,决定针对感兴趣的内容实际编码实践一下,昨天刚好看到有关使用Python来读取XML文 ...
- selenium-python读取XML文件
首先这是我们要读取的XML文件 <?xml version="1.0" encoding="utf-8" ?><info> <ba ...
- 读取xml文件,写入excel
在上一篇 Python写xml文件已经将所有订单写入xml文件,这一篇我们把xml文件中的内容读出来,写入excel文件. 输入xml格式: <?xml version="1.0&qu ...
- C#中常用的几种读取XML文件的方法
1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/
- 读取xml文件报错:Invalid byte 2 of 2-byte UTF-8 sequence。
程序读取xml文件后,系统报“Invalid byte 2 of 2-byte UTF-8 sequence”错误,如何解决呢? 1.程序解析xml的时候,出现Invalid byte 2 of 2- ...
- C#读取XML文件的基类实现
刚到新单位,学习他们的源代码,代码里读写系统配置文件的XML代码比较老套,直接写在一个系统配置类里,没有进行类的拆分,造成类很庞大,同时,操作XML的读写操作都是使用SetAttribute和node ...
- C#读取XML文件的方法
先写一个xml文件: <?xml version="1.0" encoding="utf-8" ?> <bookste> <!-- ...
随机推荐
- CF1117C Magic Ship
CF1117C Magic Ship 考虑到答案具单调性(若第 \(i\) 天能到达目的点,第 \(i+1\) 天只需向风向相反的方向航行),可以二分答案. 现在要考虑给出一个天数 \(m\) ,问 ...
- 使用python处理selenium中的xpath定位元素的模糊匹配问题
# 用contains,寻找页面中style属性值包含有sp.gif这个关键字的所有div元素,其中@后面可以跟该元素任意的属性名. self.driver.find_element_by_xpath ...
- 生成代码,从 T1 到 T16 —— 自动生成多个类型的泛型
当你想写一个泛型 的类型的时候,是否想过两个泛型参数.三个泛型参数.四个泛型参数或更多泛型参数的版本如何编写呢?是一个个编写?类小还好,类大了就杯具! 事实上,在 Visual Studio 中生成代 ...
- Visual->UIElement->FrameworkElement,带来更多功能的同时也带来了更多的限制
在 WPF 或 UWP 中,我们平时开发所遇到的那些 UI 控件或组件,都直接或间接继承自 Framework.例如:Grid.StackPanel.Canvas.Border.Image.Butto ...
- 【angularJS】MVC
angularJS中的mvc是借助于$scope实现的. View(视图), 即 HTML. Model(模型), 当前视图中可用的数据.scope 是模型.scope 是一个 JavaScript ...
- 完美解决github访问速度慢[转]
1. 修改本地hosts文件 windows系统的hosts文件的位置如下:C:\Windows\System32\drivers\etc\hosts mac/linux系统的hosts文件的位置如下 ...
- Sprint第一个冲刺(第八天)
一.Sprint介绍 完善点餐界面,点击进行跳转. 实验截图: 任务进度: 二.Sprint周期 看板: 燃尽图:
- SpringBoot在logback.xml中读取application.properties中配置的日志路径
1.在springboot项目中使用logback记录日志,在logback.xml中配置日志存储位置时读取application.properties中配置的路径,在 logback.xml中配置引 ...
- [深度学习]Wake-Sleep算法
本文翻译自2007-To recognize shapes, first learn to generate images, Geoffrey Hinton. 第五种策略的设计思想是使得高层的特征提取 ...
- 使用JDK合成照片
原图(工程所在目录7098849.jpg): 头像(工程所在目录20181023201750.jpg): 开始合成(执行如下main方法): public static void main(Strin ...