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

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

  • 相关阅读:
    SecureRandom
    《Head First 设计模式》[02] 观察者模式
    《MySQL必知必会》[07] 管理事务处理
    《MySQL必知必会》[06] 触发器
    《MySQL必知必会》[05] 存储过程和游标
    Centos7安装Nginx
    IDEA配置Tomcat
    Java小功能大杂烩
    Java处理中文乱码问题
    Java邮件发送
  • 原文地址:https://www.cnblogs.com/shiliye/p/11753256.html
Copyright © 2011-2022 走看看