#xml #python-2.7 #pandas #xml-parsing
#xml #python-2.7 #pandas #xml-синтаксический анализ
Вопрос:
У меня есть код для анализа нескольких XML-файлов из разных каталогов:
for file in glob.iglob(os.path.join(dir, '100/**/*.xml')):
with open(file) as f:
data = etree.parse(f)
Формат XML-файлов:
<us1>
<us2>
<p-r>
<document-id>
<country>US</country>
<doc-number>07640598</doc-number>
<kind>B1</kind>
<date>20100105</date>
</document-id>
</p-r>
<ab>
<c>
<document-id>
<country>US1</country>
<doc-number>07640598989834</doc-number>
<kind>B5</kind>
<date>20100106</date>
</document-id>
</c>
</ab>
</us2></us1>
Теперь я хочу извлечь текст в «doc-number» между всеми XML-файлами, присутствующими в каталоге, и сохранить в переменной .. т.е. извлеченные данные — 07640598.
Как мне извлечь выбранные значения и сохранить их в переменной??
Ответ №1:
Вы можете использовать простое выражение XPath для получения элемента с определенным именем ElementTree
, например :
doc_no = data.find('.//doc-number')
if doc_no is not None:
print doc_no.text
Небольшое изменение в выражении XPath, если вы хотели получить doc-number
это дочернее значение p-r
:
doc_no = data.find('.//p-r/doc-number')
Комментарии:
1. да, это один из способов. Но что я хочу получить «doc_no» из тега «p-r», а не из других тегов??
2. @curiouscoder Нет проблем. Не забудьте принять ответ ( подробнее о принятии ответа )