【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 中节点树的一个部分,并说明了节点之间的关系:
![DOM node tree](http://www.w3school.com.cn/i/ct_navigate.gif)