如何使用BS4将新标签附加到xml树?

时间:2019-07-09 11:52:30

标签: xml python-3.x beautifulsoup

我正在尝试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>

1 个答案:

答案 0 :(得分:0)

使用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>