精华内容
下载资源
问答
  • pythonxml库

    2010-06-11 22:39:24
    python 解析速度很快 ,很大提高xml效率
  • Linux下Python XML库lxml的安装

    千次阅读 2013-06-17 17:07:24
    要用python处理XML数据,由于之前用过lxml,因此打算采用lxml。找出原来的写好的脚本发现不能运行,没有lxml模块,看来得自己动手。记得原来用的时候模似安装挺简单的啊,这次貌似不怎么幸运。按照google的结果,...
    要用python处理XML数据,由于之前用过lxml,因此打算采用lxml库。找出原来的写好的脚本发现不能运行,没有lxml模块,看来得自己动手。记得原来用的时候模似安装挺简单的啊,这次貌似不怎么幸运。按照google的结果,好几次都没成功。
    本人系统是ubuntu 12.04,后来知道可以直接sudo apt-get install python-lxml就可以。现在想起,我安装的时候,试过sudo apt-get install lxml,提示找不到包。这里引出一个问题如何根据关键词查询包名。

    我用sudo apt-get help(好多这种格式的命令都会支持help),结果没有发现apt-get提供的根据关键词搜索包名的command或者option。谷歌之后找到了解决这个小问题的方法:先用 apt-cache search找到软件的准确名字,再用apt-cache show来看详细的信息。

    apt-cache search lxml
    结果:
    inkscape - vector-based drawing program
    python-lxml - pythonic binding for the libxml2 and libxslt libraries
    python-lxml-dbg - pythonic binding for the libxml2 and libxslt libraries (debug extension)
    python-lxml-doc - pythonic binding for the libxml2 and libxslt libraries (documentation)
    python3-lxml - pythonic binding for the libxml2 and libxslt libraries
    python3-lxml-dbg - pythonic binding for the libxml2 and libxslt libraries (debug extension)
    xml-core - XML infrastructure and XML catalog file support
    python-okasha - trivial WSGI web framework for Python
    python-pyquery - jQuery-like library for python
    tclxml - Tcl library for XML parsing
    然后就可以用apt-cache python-lxml来查看包的依赖等详细信息。

    顺便查了一下apt-cache的用法,贴在下面:

    apt-cache是一个apt软件包管理工具,它可查询apt的二进制软件包缓存文件。通过它我们可查询软件包的状态信息。
    apt-cache show package_name
    显示软件的信息,包括版本号,安装状态和包依赖关系等。
    apt-cache search package_name
    搜索软件包,可用正则表达式。
    apt-cache showpkg package_name
    显示软件包的依赖关系信息。
    apt-cache policy package_name
    显示软件包的安装状态和版本信息。
    apt-cache depends package_name
    显示指定软件包所依赖的软件包。
    apt-cache rdepends package_name
    显示软件包的反向依赖关系,即有什么软件包需依赖你所指定的软件包。

    展开全文
  • SignXMLPython中的XML签名 SignXMLPython中W3C 标准的实现。 除其他用途外,该标准(也称为XMLDSig和 )用于在和提供有效负载安全性。 该标准存在两个版本( 和)。 SignXML实现了该标准的所有必需组件以及最...
  • # xml文件解析初体验... # country_data.xml文件的内容如下: ''' <?xml version="1.0"?> <data> <country name="Liechtenstein"> <rank>1</rank> <year>2008</year> ...
  • Python 标准 xml 详解

    2020-12-12 14:14:33
    对于简单的 XML 解析处理, 可以使用标准 xml, 相对于第三方 lxml, xml 无需额外安装, 但 xml 是用 Python 实现的, 性能不如 lxml XML 的解析功能主要由 xml.etree.ElementTree 模块完成, 其中包含两个类, ...

    对于简单的 XML 解析处理, 可以使用标准库 xml, 相对于第三方库 lxml, xml 无需额外安装, 但 xml 是用 Python 实现的, 性能不如 lxml


    XML 的解析功能主要由 xml.etree.ElementTree 模块完成, 其中包含两个类, ElementTree 用于表示整个 XML 文档, 而 Element 表示文档中的一个节点


    示例数据, 命名为 book.xml

    <?xml version="1.0"?>
    <bookstore>
    	<book name="西游记">
    		<author>吴承恩</author>
    		<dynasty>明朝</dynasty>
    		<similar name="封神演义" author="许仲琳"/>
    	</book>
    	<book name="红楼梦">
    		<author>曹雪芹</author>
    		<dynasty>清朝</dynasty>
    	</book>
    	<book name="三国演义">
    		<author>罗贯中</author>
    		<dynasty>明末清初</dynasty>
    		<similar name="三国志" author="陈寿"/>
    	</book>
    </bookstore>
    

    导入要解析的 XML 文档, 并获取文档的根节点

    import xml.etree.ElementTree as ET
    
    tree = ET.parse("./book.xml")
    root = tree.getroot()
    

    也可以直接解析字符串

    with open("./book.xml") as fp:
        root = ET.fromstring(fp.read())
    

    对于每一个节点 Element:

    • 通过列表接口可以访问直接子节点
    • 通过字典接口可以访问属性节点, 也可通过 attrib 属性(例如 root.attrib)得到真正的字典

    其他还有 tag 属性表示标签名, text 表示其包含的文本内容

    # 遍历直接子节点
    for book in root:
        print(book.tag, book.attrib, book.get("name"))
    
    # 访问根节点下的第2个子节点, 再向下访问第1个子节点的文本, 也就是 "<author>曹雪芹</author>"
    author = root[1][0].text
    print(type(author), author)
    

    打印输出

    book {'name': '西游记'} 西游记
    book {'name': '红楼梦'} 红楼梦
    book {'name': '三国演义'} 三国演义
    <class 'str'> 曹雪芹
    

    获取到的文本结果与 lxml 不同, 这里的结果直接是字符串类型


    递归函数, 可以遍历所有的后代节点

    # 递归选择所有标签名为 "similar" 的节点
    for book in root.iter("similar"):
        print(book.attrib)
    

    打印输出

    {'name': '封神演义', 'author': '许仲琳'}
    {'name': '三国志', 'author': '陈寿'}
    

    XPath 语法

    XPath 类似于文件路径, 路径中最末尾的部分表示要提取的内容, 分隔符有两种, "/"表示直接子节点的关系, "//"表示所有的子节点

    语法 含义
    tag 匹配特定标签
    * 匹配所有元素
    . 当前节点, 用于相对路径
    父节点
    [@attrib] 匹配包含 attrib 属性的节点
    [@attrib=‘value’] 匹配 attrib 属性等于 value 的节点
    [tag] 匹配包含直接子节点 tag 的节点
    [tag=‘text’] 匹配包含直接子节点 tag 且子节点文本内容为 text 的节点
    [n] 匹配第 n 个节点

    [] 前面必须有标签名, book[@name][similar] 匹配带有 name 属性以及 similar 直接子节点的 book 节点, 然后将 book[@name][similar] 置于 XPath 路径中, 例如 “/bookstore/book[@name][similar]”


    可以通过 Element 对象的方法 findall(path)find(path) 使用 XPath 语法, 次时路径是从 Element 代表的节点开始, 也可以通过 ElementTree 对象调用 findallfind, 相当于路径从根节点开始

    匹配到节点, findall 返回所有匹配节点的列表, find 返回首个匹配节点, 没有匹配到节点时, findall 返回空列表, find 返回 None

    # . 表示 bookstore 节点
    author_1 = tree.find("./book[@name='红楼梦']/author").text
    author_2 = tree.findtext("./book[@name='红楼梦']/author")
    print("红楼梦作者:", author_1, author_2)
    
    author_3 = root.find("./book/similar[@name='三国志']").get("author")
    print("三国志作者:", author_3)
    

    打印结果

    红楼梦作者: 曹雪芹 曹雪芹
    三国志作者: 陈寿
    

    findtext 类似于 find, 直接获取节点的文本内容


    books_1 = root.findall("./book[similar]")
    # 对于直接子节点, 可以省略 ./
    books_2 = root.findall("book[similar]")
    print(books_1 == books_2)
    for book in books_1:
        print(book[0].text, book[1].text)
    

    打印结果

    True
    吴承恩 明朝
    罗贯中 明末清初
    
    展开全文
  • Python XML操作

    2019-06-14 17:01:48
    Python XML操作 XML(可扩展性标记语言)是一种非常...本文根据python库文档中的xml.etree.ElementTree类来进行介绍XML的解析:https://docs.python.org/3.5/library/xml.etree.elementtree.html BTW,xml.etree....

    Python XML操作

    XML(可扩展性标记语言)是一种非常常用的文件类型,主要用于存储和传输数据。在编程中,对XML的操作也非常常见。

    本文根据python库文档中的xml.etree.ElementTree类来进行介绍XML的解析:https://docs.python.org/3.5/library/xml.etree.elementtree.html 

    BTW,xml.etree.cElementTree模块从3.3以后就被弃用了.

    XML格式

    首先,来看一下XML所包含的元素类型

    1. 标签 <tag>

    2. 属性 <tag  name="attribute">

    3. 数据 <data>1<data>

     例如 xml段:

    复制代码

    <?xml version="1.0"?>
    <data>
        <country name="Liechtenstein">
            <rank>1</rank>
            <year>2008</year>
            <gdppc>141100</gdppc>
            <neighbor name="Austria" direction="E"/>
            <neighbor name="Switzerland" direction="W"/>
        </country>
        <country name="Singapore">
            <rank>4</rank>
            <year>2011</year>
            <gdppc>59900</gdppc>
            <neighbor name="Malaysia" direction="N"/>
        </country>
        <country name="Panama">
            <rank>68</rank>
            <year>2011</year>
            <gdppc>13600</gdppc>
            <neighbor name="Costa Rica" direction="W"/>
            <neighbor name="Colombia" direction="E"/>
        </country>
    </data>

    复制代码

     

    XML操作

    • 读取

    #从变量读取,参数为XML段,返回的是一个根Element对象
    root = ET.fromstring(country_data_as_string)
    
    #从xml文件中读取,用getroot获取根节点,根节点也是Element对象
    tree = ET.parse('file.xml')
    root = tree.getroot()
    • 访问

      • 访问Element对象的标签、属性和值
    tag = element.tag
    attrib = element.attrib
    value = element.text
      • 访问子节点
    #打印根节点的标签和属性,获取
    for child in root:
        print(child.tag, child.attrib)
    • 查找操作

      • Element元素迭代子元素:Element.iter("tag"),可以罗列该节点所包含的所有其他节点(element对象)
    #打印根节点中所有的neighbor对象的name属性
    for neighbor in root.iter('neighbor'):
        print(neighbor.attrib['name'])
      • Element.findall("tag"):查找当前元素为“tag”的直接子元素
    #findall只能用来查找直接子元素,不能用来查找rank,neighbor等element
    for country in root.findall('country'):
        rank = country.find('rank').text
        name = country.find('rank').text
        neig = country.find('neighbor').attrib
        print(rank, name,neig)
      • Element.find("tag"):查找为tag的第一个直接子元素
    #返回第一个tag为country的element,如没有,返回None
    firstCountry = root.find("country")
    print(firstCountry)
    • 创建xml文件

    复制代码

    __author__ = 'xua'
    
    import xml.etree.ElementTree as ET
    #创建根节点
    a = ET.Element("root")
    #创建子节点,并添加属性
    b = ET.SubElement(a,"sub1")
    b.attrib = {"name":"name attribute"}
    #创建子节点,并添加数据
    c = ET.SubElement(a,"sub2")
    c.text = "test"
    
    #创建elementtree对象,写文件
    tree = ET.ElementTree(a)
    tree.write("test.xml")

    复制代码

    创建的新文件内容为:<root><sub1 name="name attribute" /><sub2>test</sub2></root>

    • 修改XML文件

      • ElementTree.write("xmlfile"):更新xml文件
      • Element.append():为当前element对象添加子元素(element)
      • Element.set(key,value):为当前element的key属性设置value值
      • Element.remove(element):删除为element的节点

    复制代码

    #读取待修改文件
    updateTree = ET.parse("test.xml")
    root = updateTree.getroot()
    #创建新节点并添加为root的子节点
    newEle = ET.Element("NewElement")
    newEle.attrib = {"name":"NewElement","age":"20"}
    newEle.text = "This is a new element"
    root.append(newEle)
    
    #修改sub1的name属性
    sub1 = root.find("sub1")
    sub1.set("name","New Name")
    
    #修改sub2的数据值
    sub2 = root.find("sub2")
    sub2.text = "New Value"
    
    #写回原文件
    updateTree.write("test.xml")

    复制代码

    更新完的文件为:<root><sub1 name="New Name" /><sub2>New Value</sub2><NewElement age="20" name="NewElement">This is a new element</NewElement></root>

     

    总结

     XML的操作比较常见,当然也有很多第三方的库可以使用,所需要做的操作无非就是常用的读写xml文件、元素节点的增删改查,大家还可以在python官方文档上学习更多的操作。

    https://docs.python.org/3.5/library/xml.etree.elementtree.html 

    展开全文
  • python XML

    2021-06-03 04:14:56
    引用ElementTree: import xml.etree.ElementTree as ET data=''' <person> <name>Chuck</name> <phone type="intl"> +1 734 303 4456 </phone> <email hide="yes"/>...

    tag:即标签,用于标识该元素表示哪种数据

          eg:<data>用<>括起来的为标签

          提取:obj.tag

    attrib:即属性,用字典形式保存,即{'channel'='CSDN'}

          eg:<country name='Liechtenstein'>中name="Liechtenstein"为属性,用字典形式表示

          提取:obj.attrib

    text:文本字符串,并不是必须的

          eg:<rank>1<rank>中的1为标签rank的text

          提取:obj.text

    格式:

    a= open(xml_file_path)

    tree=ET.parse(a)    

    root = tree.getroot() #获取根节点

    ​
    import xml.etree.ElementTree as ET
     
    data='''
    <person>
        <name>Chuck</name>
        <phone type="intl">
            +1 734 303 4456
        </phone>
        <email hide="yes"/>
    </person>'''
    #data = open("XXX.xml").read() 做演示省略了读取文件这一步
     
    root=ET.fromstring(data)          #固定格式:得到根节点root
    Name=root.find('name')            #tree.find(<XX>)
    Attr=root.find('email')
    print('Name:',Name.text)          #<>.text
    print('Attr:',Attr.get('hide'))   
    
    #得到根节点下面的数据:
    root=ET.fromstring(data)
    for i in root:
        print(i.tag)
        print(i.attrib)
    
    结果:
    name
    {}
    phone
    {'type': 'intl'}
    email
    {'hide': 'yes'}
    
    #得到具体的数据:
    root=ET.fromstring(data)
    for i in root.findall('email'):  #若查找所有该标记节点数据用for i in root.iter('email'):
        print(i.tag)
        print(i.attrib)
    
    结果:
    email
    {'hide': 'yes'}
    
    ​

    部分借鉴:https://blog.csdn.net/m0_37857151/article/details/84037148

                      https://blog.csdn.net/fenglepeng/article/details/103768230

    展开全文
  • python XML解析的常用

    2013-01-06 17:19:00
    1.ElementTree属于Python标准的一部分,它的位置为xml.etree.ElementTree。 2.lxml是一个开源的第三方,以流行的libxml2 解析器为基础开发。提供了与ElementTree完全兼容的api,并且扩展它以提供了对XPath 1.0...
  • python3.x以上的版本,python标准提供了ElementTree。 二,ElementTree常用的方法 1,示例数据 2,Element.iter()递归遍历其下的所有子树(包括子级,子级的子级,等等) fromstring() 将XML从字符...
  • Python 标准XML

    千次阅读 2018-12-31 09:56:43
    今天要说的 XML 是最突出的处理上述这种转换的标记格式,它使用标签(tag)分隔数据。XML 在软件领域的用途非常广泛。 XML XML 是什么?如果非要对其做一个定义式的说明,那这里我不得不引用一下 w3school 里面简洁...
  • Python 标准xml.etree.ElementTree

    万次阅读 2020-04-13 13:57:19
    Python中有多种xml处理API,常用的有xml.dom.*模块、xml.sax.*模块、xml.parser.expat模块和xml.etree.ElementTree模块(以下简称ET)。本文将主要介绍ET的使用,以及它的常用函数。其它模块的简介,请参照文献[1]。...
  • Python XML 解析

    2018-02-24 14:20:15
    ·SAX(simple API for XML):python标准包含SAX解析器,SAX是事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。 ·DOM(Document Object Model):将XML数据在内存中解析...
  • 主要介绍了Python中的XML库4Suite Server,来自于IBM官方网站,需要的朋友可以参考下
  • python xml学习笔记

    2020-04-16 11:00:18
    参考 1.xml.etree.ElementTree官方 2.Python 标准xml.etree.ElementTree
  • Python 标准XML

    2019-03-21 09:03:30
    写在之前 带分隔符的文件仅有两维的数据:行 & 列。如果我们想在程序之间交换数据结构,需要一种方法把层次结构,序列,集合... XML XML 是什么?如果非要对其做一个定义式的说明,那这里我不得不引用一下 w...
  • 10分钟掌握Python xml.dom

    2021-05-18 10:44:01
    xml库中包含了许多处理xml文件数据的子库,xml.dom就是其中一个。 既然使标准库的一部分,就不需要额外安装了。 xml文件的结构 既然是处理xml文件的,那么我们还是先来看看标准的xml文件是什么样
  • Python 标准xml.etree.ElementTree Python中有多种xml处理API,常用的有xml.dom.*模块、xml.sax.*模块、xml.parser.expat模块和xml.etree.ElementTree模块(以下简称ET)。本文将主要介绍ET的使用,以及它的...
  • Python xml解析

    2017-09-27 14:38:03
    python有三种方法解析XML,SAX,DOM,以及ElementTree ###1.SAX (simple API for XML )  pyhton 标准包含SAX解析器,SAX是一种典型的极为快速的工具,在解析XML时,不会占用大量内存。 但是这是基于回调机制的...
  • Python 标准 —— xml

    千次阅读 2016-04-20 23:39:34
    什么是 xmlxml:eXtensible Markup Language,即可扩展标记语言,它可以用来标记数据/定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。// abc.xml 结构上来说,它很像常见的 HTML 超文本标记语言...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,225
精华内容 1,290
关键字:

pythonxml库

python 订阅