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

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

  • 相关阅读:
    彩色文件夹、彩色文件、图标标记(MultiColorWin)快速操作
    git 国内源
    Mysql 日期格式化 复杂日期区间查询
    项目版本管理Git使用详细教程
    SpringBoot 优雅配置跨域多种方式及Spring Security跨域访问配置的坑
    SpringBoot Spring Security 核心组件 认证流程 用户权限信息获取详细讲解
    SpringBoot包扫描之多模块多包名扫描和同类名扫描冲突解决
    初阶绘图
    变量与档案存取
    结构化程式和自定义函数
  • 原文地址:https://www.cnblogs.com/shiliye/p/11753256.html
Copyright © 2011-2022 走看看