参考:XML DOM 参考手册(w3school)

参考:python专题-读取xml文件

参考:请问用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)


参考:XML DOM - 属性和方法

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文件的更多相关文章

  1. python专题-读取xml文件

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...

  2. python读取xml文件

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...

  3. 【Python实例一】使用minidom读取xml文件

    前言:最近刚在廖雪峰老师的网站里学习了Python的基础内容,想着循序渐进地找点实例练练手,网上看到有很多相关资料,决定针对感兴趣的内容实际编码实践一下,昨天刚好看到有关使用Python来读取XML文 ...

  4. selenium-python读取XML文件

    首先这是我们要读取的XML文件 <?xml version="1.0" encoding="utf-8" ?><info> <ba ...

  5. 读取xml文件,写入excel

    在上一篇 Python写xml文件已经将所有订单写入xml文件,这一篇我们把xml文件中的内容读出来,写入excel文件. 输入xml格式: <?xml version="1.0&qu ...

  6. C#中常用的几种读取XML文件的方法

    1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/

  7. 读取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- ...

  8. C#读取XML文件的基类实现

    刚到新单位,学习他们的源代码,代码里读写系统配置文件的XML代码比较老套,直接写在一个系统配置类里,没有进行类的拆分,造成类很庞大,同时,操作XML的读写操作都是使用SetAttribute和node ...

  9. C#读取XML文件的方法

    先写一个xml文件: <?xml version="1.0" encoding="utf-8" ?> <bookste> <!-- ...

随机推荐

  1. Viterbi算法和隐马尔可夫模型(HMM)算法

    隐马尔可夫模型(HMM)及Viterbi算法 https://www.cnblogs.com/jclian91/p/9954878.html HMM简介   对于算法爱好者来说,隐马尔可夫模型的大名那 ...

  2. 【angularJS】MVC

    angularJS中的mvc是借助于$scope实现的. View(视图), 即 HTML. Model(模型), 当前视图中可用的数据.scope 是模型.scope 是一个 JavaScript ...

  3. PHP和JS页面跳转和刷新总结

    PHP 页面跳转: // 只是跳转,所以一定要用die();或者exit;终止下一步操作; header('location:index.php'); exit; // 等待3秒,跳转并刷新 head ...

  4. vertica从其它表迁移数据到新表(insert into 语句使用方法实例)

    版权声明:本文为博主原创文章.博主同意自由转载. https://blog.csdn.net/tx18/article/details/26585649 #例:迁移微博用户数据. 因为源表weiboF ...

  5. 什么是spark(五)Spark SQL

       Spark SQL Spark SQL主要分为两部分,一部分是Spark Sql在scala中直接,使用作为执行层面上的应用,本质上就是生成DAG的另外一种形式:其发生试下Driver中生成: ...

  6. 老齐python-基础8(函数)

    1.函数基本概念 2.理解函数 python中一个函数,就是一种映射关系 3.定义函数 #!/usr/bin/env python #coding:utf-8 def add_function(a,b ...

  7. 给DB2增加删除字段二三事

    加字段用这个,CS.TG表名,LINE2_TYPE字段名,CHAR(1)字段类型 ALTER TABLE CS.TG ADD COLUMN LINE2_TYPE CHAR(1); 要是加错了用以下语句 ...

  8. UEFI 启动GPT分区 Win10和Ubuntu16.04双系统安装

    测试机器:联想小新锐7000 工具:UltraISO 系统下载 为Ubuntu分配空间 右键“我的电脑”——>“管理”——>“磁盘管理”,(win+x快捷键)选择一个有很大空闲空间的磁盘, ...

  9. java中Mongo

    1.  query.fields().include("idfa").include("imei").include("id").inclu ...

  10. Jquery 监听浏览器前进后退

    jQuery(document).ready(function () { if (window.history && window.history.pushState) { $(win ...