代码之家  ›  专栏  ›  技术社区  ›  duhaime

美化组:XML中的查询命名空间

  •  1
  • duhaime  · 技术社区  · 6 年前

    我有一个带有自定义名称空间的XML文档:

    <parent>
     <c1:doc>
       <c1:attr_a></c1:attr_a>
       <c1:attr_b></c1:attr_b>
     </c1:doc>
     <c2:doc>
       <c2:attr_a></c2:attr_a>
       <c2:attr_b></c2:attr_b>
      </c2:doc>
    </parent>
    

    在Python的BeautifulSoup中是否可以查询所有 attr_a 此文档中的属性?

    soup.find_all('*.attr_a') 或者更直接地类似?如有任何建议,将不胜感激。

    1 回复  |  直到 6 年前
        1
  •  1
  •   duhaime    6 年前

    啊哈,显然可以使用正则表达式来完成这项任务。从 docs :

    如果传入正则表达式对象,Beauty Soup将进行过滤 查找名称以字母b开头的所有标记;在这个 案例、标签和标签:

    html_doc = """
    <parent>
     <c1:doc>
       <c1:attr_a></c1:attr_a>
       <c1:attr_b></c1:attr_b>
     </c1:doc>
     <c2:doc>
       <c2:attr_a></c2:attr_a>
       <c2:attr_b></c2:attr_b>
      </c2:doc>
    </parent>
    """
    
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(html_doc, 'html.parser')
    
    import re
    for tag in soup.find_all(re.compile(".attr_a")):
        print(tag.name)