zoukankan      html  css  js  c++  java
  • 小心python标准库xml.etree.ElementTree 的find和findall方法

    python标准库中的xml.etree.ElementTree使用起来很方便,对于xml的操作封装的也挺好。但有一些细节需要引起各位使用者的注意:
    其中xml.etree.ElementTree的find 和 findall方法并不是完全支持XPath,不用说XPath2.0,就是连XPath1.0也只是支持了其中的一小部分,可以说只是支持了XPath1.0的一个子集吧。
    从以下例子能很好的说明这个问题:
    etree.find("AUTO/PROCESS_THREAD_OPERATE/TIME")
    etree.find("AUTO/PROCESS_THREAD_OPERATE/TIME[@action='DNS_QUERY']")
    都不会出问题,运行结果和预想一样,但如果运行以下操作:
    etree.find("AUTO/PROCESS_THREAD_OPERATE/TIME[@action='DNS_QUERY' and @action='HTTP_ACCESS']")
    就会报出一个invalid predicate的错误。
    究其原因就是python标准库中的xml.etree.ElementTree对于XPath的支持很有限
    如果要想完全采用XPath来操作,建议使用lxml的xpath

     

  • 相关阅读:
    Ping
    boost::python开发环境搭建
    mingw和libcurl
    ssh远程执行命令使用明文密码
    netty源码阅读之UnpooledByteBufAllocator
    Direct ByteBuffer学习
    clions的使用
    netty中的PlatformDependent
    STL之priority_queue(优先队列)
    c++线程调用python
  • 原文地址:https://www.cnblogs.com/Jerryshome/p/2531991.html
Copyright © 2011-2022 走看看