【问题标题】:Getting tag name from xml从xml获取标签名称
【发布时间】:2017-06-04 00:03:04
【问题描述】:

我有这样结构的文件:

<pwACL>
The gateway only supports upto 10 rules.
</pwACL>

<cmn53>
Batch Number
</cmn53>

我想获取标签名称和标签之间的数据。我尝试使用 BeatifulSoup HTMLParser 库,但它会自动将标签名称转换为小写。我发现可以像这样使用 html5lib 和 beatifulsoup 树生成器来创建树:

parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder("beatifulsoup"))

但似乎 html5lib 不再支持 beatifulsoup 了。有没有其他办法?

【问题讨论】:

    标签: python xml beautifulsoup


    【解决方案1】:

    BeautisulSoup documentation - Other parsers problems中提到:

    由于 HTML 标记和属性不区分大小写,所有三个 HTML 解析器将标记和属性名称转换为小写。那就是 标记&lt;TAG&gt;&lt;/TAG&gt; 转换为&lt;tag&gt;&lt;/tag&gt;。如果你想 保留混合大小写或大写的标签和属性,您需要 将文档解析为 XML。

    Parsing XML:

    默认情况下,Beautiful Soup 将文档解析为 HTML。解析一个 文档为 XML,将“xml”作为第二个参数传递给 BeautifulSoup 构造函数:

    soup = BeautifulSoup(markup, "xml")
    

    您需要have lxml installed


    >>> markup = '''<pwACL>
    ... The gateway only supports upto 10 rules.
    ... </pwACL>'''
    >>> soup = BeautifulSoup(markup, 'xml')
    >>> soup.find_all()
    [<pwACL>\nThe gateway only supports upto 10 rules.\n</pwACL>]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多