Перебор узлов XML на Python
Требуется из этой XML распарсить узлы и дочерние элементы в соответствии с их соотношением друг к другу. Схема сопоставления: <s>IP-адрес</s>,<d>IP-адрес</d>,<dport>INT</dport>,<p>TCP/UDP</p> Пример: 10.11.11.1, 10.12.11.3, 465, TCP. Объяснение: (s=source,d=destination,dport=port,p=protocol) | На всякий случай, приложу ещё сам iptables. Делал через Python, но там в выводе получается мусор и они неравномерно распределяются - код ниже. Спасибо большое
from bs4 import BeautifulSoup as Soup
if __name__ == '__main__':
with open('1.xml', 'r', encoding='utf-8') as xml:
soup = Soup(xml.read(), 'lxml')
dport_tcp = [tcp.find('dport').text for tcp in soup.find_all('tcp')]
dport_udp = [udp.find('dport').text for udp in soup.find_all('udp')]
multport = [multiport.find('dports').text for multiport in soup.find_all('multiport')]
ports = dport_tcp+dport_udp+multport
#print(dport_tcp, dport_udp, sep='\n')
source = [match.find('s') for match in soup.find_all('match')]
destination = [match.find('d') for match in soup.find_all('match')]
for match in soup.find_all('match'):
if match.find('d') == 'None':
print("error")
print(destination)