zoukankan      html  css  js  c++  java
  • 【304】python专题-读取xml文件

    参考: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 中节点树的一个部分,并说明了节点之间的关系:

    DOM node tree
  • 相关阅读:
    request
    href="#"
    可展开收起的客服导航。
    JS添加父节点的方法。
    精简漂亮的导航浮动菜单显示特效演示
    竖排导航
    仿新浪微博
    鼠标滑过改变文字
    滚动函数
    一些常用的兼容函数。
  • 原文地址:https://www.cnblogs.com/alex-bn-lee/p/8694387.html
Copyright © 2011-2022 走看看