【问题标题】:How to append a new tag to an xml tree with BS4?如何使用 BS4 将新标签附加到 xml 树?
【发布时间】:2019-07-09 11:52:30
【问题描述】:

我正在尝试使用 BS4,因为我正在尝试编写脚本来监控 Web API。所以我做了这个简单的xml文件

<system>
   <load>0.03</load>
   <user>7.4</user>
   <system>3.2</system>
   <wait>0.9</wait>
</system>

我想要的是复制“系统”中的第一个标签,即“加载”,并将其再次附加到系统标签的末尾。所以我用python写了这个脚本

import bs4
with open("test.xml") as infile2:
    tree = bs4.BeautifulSoup(infile2.read(), "lxml")
    load_tag = tree.system.load
    tree.system.append(load_tag)`

但不是将加载标签复制到末尾,而是实际移动了它 所以而不是这个

<system>
    <load>0.03</load>
    <user>7.4</user>
    <system>3.2</system>
    <wait>0.9</wait>
    <load>0.03</load>
</system>

我收到了

<system>
    <user>7.4</user>
    <system>3.2</system>
    <wait>0.9</wait>
    <load>0.03</load>
</system>

【问题讨论】:

    标签: xml python-3.x beautifulsoup


    【解决方案1】:

    使用copy.copy

    例如:

    import bs4
    from copy import copy
    
    with open("test.xml") as infile2:
        tree = bs4.BeautifulSoup(infile2.read(), "lxml")
        load_tag = tree.system.load
        tree.system.append(copy(load_tag))
    

    输出:

    <system>
        <load>0.03</load>
        <user>7.4</user>
        <system>3.2</system>
        <wait>0.9</wait>
        <load>0.03</load>
    </system>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-12
      • 2020-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      相关资源
      最近更新 更多