#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. Мне это кажется неправильным.