2016-01-19 6 views
-2

У меня есть строка xml (которую я извлекаю из CSV), из которой мне нужно определить значения и имена из нее. Логика я думал, чтобы извлечь все строки, которые находятся в промежутках между > и </ значений, а затем удалить извлеченную подстроку, которая содержит < или >Извлечение нескольких подстрок из строки с использованием python

Я еще думать о том, как я могу извлечь имя параметра, а также. Я использую python.

Ниже приведена строка xml, которую я прочитал из csv-файла.

<ServiceInstanceUpdateAck xmlns='http://www.loremipsum.com/'> 
<Context> 
    <Attribute name='Atri1'>A1</Attribute> 
    <Attribute name='Atri2'>A2</Attribute> 
    <Attribute name='Atri3'>A3</Attribute> 
</Context> 
<Operation>DEPROVISION</Operation> 
<Status>SUCCESS</Status> 
<Error message='No Error' majorErrorCode='E_NONE' minorErrorCode='E_NONE'/> 
<Service> 
    <Id>11233334</Id> 
</Service> 
</ServiceInstanceUpdateAck> 

Любая помощь приветствуется.

Примечание: это не полный xml. Это данные тела тела, которые я извлекаю из файла CSV. Это строка в основном, когда я ее получаю. Поэтому я не могу использовать XML-парсер здесь.

+0

Это не целое xml. Это данные тела отправления запроса, который я извлекаю из файла CSV. Так что это в основном строка. и я не могу использовать XML-парсер здесь. – user2606665

+0

Почему бы вам не использовать анализатор XML данных тела отправления вашего запроса? –

ответ

3

Поскольку ваши данные просто XML вы могли бы просто использовать XML-анализатор, документацию можно найти here

+0

Просто добавила заметку в мой вопрос, которая делает ее более понятной. Невозможно использовать XML-парсер здесь. – user2606665

+0

Вы можете полностью разобрать XML из строки, по крайней мере, согласно документации. То, что вы не знаете, что такое имена, прекрасно, поскольку вы можете рекурсивно обращаться к детям и обращаться к ним с помощью .tag и .attrib. –

+0

Можете ли вы отсылать меня к примеру? Я пробовал делать это с .tag и .attrib, но не был успешным. – user2606665

0

Используйте XML-анализатор; xml.dom.minidom должно быть достаточно:

>>> import xml.dom.minidom 
>>> doc = xml.dom.minidom.parseString(xmlString) 
>>> for item in doc.getElementsByTagName("Attribute"): 
...  print(item.getAttribute("name")) 
...  print(item.childNodes[0].wholeText) 
Atri1 
A1 
Atri2 
A2 
Atri3 
A3 
+0

Привет Тим, я думал об использовании его, но проблема в том, что это всего лишь один набор строк. У меня есть несколько наборов строк, которые имеют разные значения. Использование парсера с жестко закодированными значениями тегов будет работать только для одной строки, а не для других. – user2606665

+0

@ user2606665: Вам нужно знать имена только в том случае, если вы ищете определенные узлы. Вы можете так же легко проанализировать все дерево рекурсивно, что вы не можете делать с регулярными выражениями. –

+0

На самом деле узлы имеют разные имена в разных строках. Они не одинаковы для всех строк. – user2606665

Смежные вопросы