Доступ к полю, указанному как , используя «Имя_поля», используя lxml

#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