Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 15.08.2014
Сообщений: 6

Xml parse

15.08.2014, 19:33. Показов 2453. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужна помощь!
Имеется файл xml и файл txt.
Содержание файла txt:
Some text:cve-2012-4456:some text
Some text:cve-2009-1112:some text

Содержание файла xml:

XML
1
2
3
4
<cve>
<item name=cve-2012-4456 ...
<desc>buffer overflow</desc></item>
</cve>
Нужно распарсить xml файл по шаблону txt файла.

Чтобы он сравнивал cve txt с cve xml и выводил информацию только тех cve которые имеются в txt файле.


Формат вывода:

Cve-2012-4456
Buffer over flow.


На данный момент написал только парсер xml файла.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from xml.dom.minidom import *
from lxml import *
 
xmldoc = parse('allitems.xml')
 
root = xmldoc.getElementsByTagName("cve")
cve_number = xmldoc.getElementsByTagName("item")
description = xmldoc.getElementsByTagName("desc")
 
 
#Запись в файл
with open('cve_base.txt', 'w') as f:
 for item in cve_number:
  f.write(item.getAttribute('name') + '\n')
 #print item.getAttribute('name')
 for child in item.getElementsByTagName('desc'):
  f.write(child.childNodes[0].nodeValue + '\n\n')
  #print child.childNodes[0].nodeValue
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.08.2014, 19:33
Ответы с готовыми решениями:

Parse XML файла
В питоне новичок. База скачана с офф сайта drugbank.ca В общем, имеем базу в 570+мб(загрузил в сжатом виде 70мб на гугл диск) ссыль на...

Создать файл xml schema на основе корректного xml
Вообщем есть следующая задача. Корректный XML файл results.xml содержит результаты прохождения теста студентами в виде: &lt;?xml...

Parse
Здравствуйте! У меня есть Parse(word='стекло', tag=OpencorporaTag('NOUN,inan,neut sing,nomn'), normal_form='стекло', score=0.75,...

6
 Аватар для Wolkodav
842 / 480 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
15.08.2014, 22:25
drunkgranny, а проблема в чем?
0
0 / 0 / 0
Регистрация: 15.08.2014
Сообщений: 6
15.08.2014, 22:27  [ТС]
проблема заключается в том, что не могу понять как сравнивать два xml файла, текстовый файл я перегнал в xml при помощи библиотеки lxml. Затем открыл его на чтение, а как дальше сравнивать их ума не приложу...
0
 Аватар для Wolkodav
842 / 480 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
15.08.2014, 22:32
drunkgranny, ну считали один файл, второй, потом просто бежите по двум массивам строк.

Добавлено через 48 секунд
Два массива сравнить - крайне тривиальная задача. У питона есть метод у файлового дескриптора - readlines( возвращает массив строк в файле)
0
0 / 0 / 0
Регистрация: 15.08.2014
Сообщений: 6
16.08.2014, 14:04  [ТС]
про readlines() я в курсе, при помощи этого метода я и строил xml из txt.

Добавлено через 15 часов 30 минут
Ну вообщем пришел к выводу, что легче не перегонять txt в xml, а сравнить два txt файла. Теперь столкнулся с проблемой, как сравнить именно определенное выражение в строке со строкой в другом файле.

у меня имеется строка файла f1:

some textrivet-123-123:some text
мне нужно сравнить со строкой файла f2:

privet-123-123
some text
privet-123-124
some text
и если нашлись совпадения по файлу f1 в файле f2 вывести:

privet-123-123
some text
0
224 / 209 / 63
Регистрация: 26.05.2011
Сообщений: 363
18.08.2014, 05:05
Так попробуйте:
Python
1
2
3
4
5
6
7
8
9
10
11
12
import lxml.etree
 
parser = lxml.etree.XMLParser(remove_blank_text=True, strip_cdata=False)
with open("allitems.xml", "rb") as f:
    xml = lxml.etree.XML(f, parser)
 
with open("cve_base.txt", "rt", encoding="utf-8") as fin,
        open("cve_out.txt", "wt", encoding="utf-8") as fout:
    for line in fin:
        _, cve, _ = line.split(":")
        for text in xml.xpath("//item[@name='{}']/desc/text()".format(cve)):
            print("{}\n{}".format(cve, text), file=fout)
ЗЫ. не проверял

Добавлено через 57 секунд
Так попробуйте:
Python
1
2
3
4
5
6
7
8
9
10
11
12
import lxml.etree
 
parser = lxml.etree.XMLParser(remove_blank_text=True, strip_cdata=False)
with open("allitems.xml", "rb") as f:
    xml = lxml.etree.XML(f, parser)
 
with open("cve_base.txt", "rt", encoding="utf-8") as fin,
        open("cve_out.txt", "wt", encoding="utf-8") as fout:
    for line in fin:
        _, cve, _ = line.split(":")
        for text in xml.xpath("//item[@name='{}']/desc/text()".format(cve)):
            print("{}\n{}".format(cve, text), file=fout)
ЗЫ. не проверял
0
0 / 0 / 0
Регистрация: 15.08.2014
Сообщений: 6
18.08.2014, 05:07  [ТС]
Тема закрыта, часа два назад разобрался сам. Всем спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.08.2014, 05:07
Помогаю со студенческими работами здесь

Python 3.8 заголовок xml <?xml version=“1.0” encoding=“utf-8”?>
Прошу помощи. Необходимо создать xml файл с заголовком &lt;?xml version=“1.0” encoding=“utf-8”?&gt;?.Код уже написан, но проблема с заголовком...

Подскажите, как парсить все xml файлы, вложенные в дочерние директории с исп. xml.dom.minidom?
Всем привет. Есть следующая структура папок: &lt;img src=&quot;https://habrastorage.org/webt/5d/0b/8f/5d0b8f031f86c050844094.png&quot;...

Parse и lex
Чем отличается parse от lex? Я перевёл в гугле, и увидел, что parse переводится как лексический разбор. Разве не lex делает лексический...

Feedparser атрибут parse не найден
builtins.AttributeError: module 'feedparser' has no attribute 'parse' вот такую ошибку получаю в результате простой операции ...

Дебаггер в pycharm заходит в файл parse.py
Доброго времени суток! Кратко объясню ситуацию : купила совсем новый ноутбук и, впервые начав на нём дебажить, столкнулась с проблемой ( на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru