Генерация одного XML-файла из другого с использованием Python

#python #xml #xml-parsing

#python #xml #xml-синтаксический анализ

Вопрос:

Как можно было бы сгенерировать локальный XML-файл из URL? Мне нужно иметь возможность выбирать определенные значения из удаленного XML-файла и помещать их в локальный. В настоящее время у меня есть только фрагменты.

 from xml.dom import minidom  
from urllib.request import urlopen  
import requests  

url = 'http://url.php'  
private_list = [16735,7456,18114]  

xmldoc = minidom.parse(urlopen(url))  
public_list = xmldoc.getElementsByTagName('server')  
for public_server in public_list:
    for private_server in private_list:
        if (public_server.attributes['id'].value) == str(private_server):
          print("Found one!")
  

К сожалению, это все, что я могу получить, я могу получить правильное количество элементов из общедоступного списка, но я не уверен, как взять эти элементы и создать их локальную копию.
Кто-нибудь может помочь?

Редактировать: Пример Пример XML выглядит следующим образом:

 <settings>
  <servers>
    <server url="192.168.1.100" name="CentOS" id="12" host="Kirk.corporate.lan"/>
    <server url="10.0.0.95" name="Ubunutu" id="4" url2="192.168.1.50" host="Spock.corporate.lan"/>
    <server url="10.0.1.95" id="30" host="scotty.corporate.lan"/>
  </servers>
</settings>
  

В этом примере мой список будет включать только идентификатор 4. Итак, я хочу взять только тот подэлемент, идентификатор которого = 4. Я могу обнаружить, что с моим кодом выше я не знаю, как взять весь этот элемент и вставить его в новый файл.

Это выглядит как с xml.etree.ElementTree Я могу сделать

 import xml.etree.ElementTree as ET
settings = ET.Element('settings')
servers = ET.SubElement(settings, 'servers')
  

Это создаст базу, но это все, что я могу сделать успешно.

Правка 2: продвинулся немного дальше

 from lxml import etree
root = etree.Element('settings')
main = etree.SubElement(root,'servers')
main = etree.SubElement(main, "server", url = "192.168.1.100", name="CentOS", id="12", host="Kirk.corporate.lan")
  

Комментарии:

1. Прочитайте building-xml-documents

2. поделитесь тем, что возвращается urlopen(url) и как должен выглядеть конечный XML.

3. Не могли бы вы взглянуть на мою правку? Я новичок в фактической публикации в stackoverflow, поэтому редактирование выглядело как лучший способ сделать лучшее объяснение. К сожалению, я не контролирую, как должен быть структурирован XML. Мне это кажется неправильным.