zoukankan      html  css  js  c++  java
  • 节点文本相关操作

    对于许多xml文件,一个根节点向下会有很多层级的子节点,通常会把文本放置到最最底层的节点
    因此要想访问文本,就必须要访问最底层的那个节点
    但也有一些xml文件,text会放置到中间层级的节点中,比如html

    创建带文本节点

    root = etree.Element("root")
    root.text = "TEXT"
    print(root.text)  #输出:TEXT
    etree.tostring(root)  #b'<root>TEXT</root>'

    节点文本相关操作

    html = etree.Element("html")
    body = etree.SubElement(html, "body")
    body.text = "TEXT"
    etree.tostring(html) # b'<html><body>TEXT</body></html>'
    
    br = etree.SubElement(body, "br")
    etree.tostring(html)  #b'<html><body>TEXT<br/></body></html>'
    br.tail = "TAIL"
    etree.tostring(html)  #b'<html><body>TEXT<br/>TAIL</body></html>'
    
    etree.tostring(br)  #b'<br/>TAIL'
    etree.tostring(br, with_tail=False)  #b'<br/>'
    etree.tostring(html, method="text")  #b'TEXTTAIL'
    
    
    #-----------------------使用xpath提取文本-----------------------------
    print(html.xpath("string()")) #输出:TEXTTAIL
    print(html.xpath("//text()")) #输出:['TEXT', 'TAIL']
    
    build_text_list = etree.XPath("//text()")
    print(build_text_list(html)) #输出:['TEXT', 'TAIL'],事先写好Xpath,并将xpath套用到html节点上
    
    texts = build_text_list(html)
    print(texts[0]) #输出:TEXT
    
    parent = texts[0].getparent()
    print(parent.tag) #输出:body
    
    print(texts[1]) #输出:TAIL
    print(texts[1].getparent().tag) #输出:br
    
    stringify = etree.XPath("string()")
    print(stringify(html)) #输出:TEXTTAIL
    print(stringify(html).getparent()) #输出:NONE,由于通过string()获取是各个节点拼接的文本,因此无法获得其父节点
    
    
    #----------------------判断是否为普通文本,或者是tail文本-----------------------------
    print(texts[0].is_text) #输出:True
    print(texts[1].is_text) #输出:False
    print(texts[1].is_tail) #输出:True

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • 相关阅读:
    Python 42 mysql用户管理 、pymysql模块
    Python 41 多表查询 和 子查询
    Python 41 完整查询语句 和 一堆关键字
    Python 40 数据库-外键约束 、多对一与多对多的处理
    Python 40 数据库-约束
    Python 38 注册和修改密码
    eas之关于编码规则
    eas之界面之间传递参数
    eas之获取集合
    eas之单据删除代码
  • 原文地址:https://www.cnblogs.com/shiliye/p/11753256.html
Copyright © 2011-2022 走看看