#python #xml #lxml
#python #xml #lxml
Вопрос:
Можно ли получить доступ к данным в следующем примере, используя обозначение «theName»? Я относительно новичок в lxml и xml в целом, этот тип поля кажется мне необычным. К сожалению, это результат, с которым мне приходится работать.
Обратите внимание, что количество дочерних элементов изменяется для каждого поля, поэтому использование позиции поля «Name1» не работает.
Пример XML:
<main>
<header>
<row type="info">
<field name="description"><![CDATA[Results]]></field>
<field name="created"><![CDATA[6/12/2014 6:45:00 PM]]></field>
</row>
<row>
<field name="profile"><![CDATA[Intel]]></field>
</row>
</header>
<sections>
<section name="Results">
<description />
<parameters />
<header />
<content>
<row>
# A row-dependend number of fields exist before the Full Content field
<field name="Name1"><![CDATA[ I am the text of interest]]></field>
<field name="AnotherName"><![CDATA[ There is content in this field, too]]></field>
# A row-dependend number of fields follow here
</row>
# There are 40,000 of these row elements
</content>
<footer>
<row type="content_count">
<field name="count"><![CDATA[9981]]></field>
</row>
</footer>
</section>
</sections>
</main>
Итак, как надежно получить доступ к содержимому этих полей?
Спасибо за ваши соображения, Маттиас
Комментарии:
1. Что такое «обозначение «имени»» ?
2. XPath — это стандартный канонический способ доступа к элементам в XML.
Ответ №1:
Если вы хотите получить доступ к field
тегу where name="TheName"
, используйте следующий XPath: /main/sections/section/content/row/field[@name='TheName']
Для получения дополнительной информации см. http://www.w3schools.com/xpath/xpath_syntax.asp