Как добавить новый тег в дерево XML с BS4? - PullRequest
1 голос
/ 09 июля 2019

Я экспериментировал с BS4, так как пытаюсь написать скрипт для мониторинга веб-API. Поэтому я сделал этот простой XML-файл

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

Я хочу скопировать первый тег в «system», который называется «load», и снова добавить его в конец системного тега. Поэтому я написал этот скрипт на 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 голосов
/ 09 июля 2019

Использование copy.copy

Ex:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...