извлечение значения из XML вложенного пространства имен с использованием дерева элементов - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть следующий XML-файл:

<?xml version="1.0" encoding="UTF-8"?>
<!--This is to override browser formatting; see server.conf[httpServer] to disable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .-->
<?xml-stylesheet type="text/xml" href="/static/atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:s="http://dev.splunk.com/ns/rest" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">
  <title>savedsearch</title>
  <id>https://website.com</id>
  <updated>2019-09-26T01:21:06-05:00</updated>
  <generator build="657388c7a488" version="7.3.0"/>
  <author>
    <name>Splunk</name>
  </author>
  <link href="/services/saved/searches/_new" rel="create"/>
  <link href="/services/saved/searches/_reload" rel="_reload"/>
  <link href="/services/saved/searches/_acl" rel="_acl"/>
  <opensearch:totalResults>92</opensearch:totalResults>
  <opensearch:itemsPerPage>30</opensearch:itemsPerPage>
  <opensearch:startIndex>0</opensearch:startIndex>
  <s:messages/>
  <entry>
    <title>MyTitle</title>
    <id>https://website.com</id>
    <updated>1969-12-31T18:00:00-06:00</updated>
    <link href="/servicesNS/nobody/some_name/saved/searches" rel="alternate"/>
    <author>
      <name>nobody</name>
    </author>
    <link href="/servicesNS/nobody/some_name/saved/searches/" rel="list"/>
    <link href="/servicesNS/nobody/some_name/saved/searches" rel="_reload"/>
    <link href="/servicesNS/nobody/some_name/saved/searches" rel="edit"/>
    <link href="/servicesNS/nobody/some_name/saved/searches/disable" rel="disable"/>
    <link href="/servicesNS/nobody/some_name/saved/searches/dispatch" rel="dispatch"/>
    <link href="/servicesNS/nobody/some_name/saved/searches/embed" rel="embed"/>
    <link href="/servicesNS/nobody/some_name/saved/searches/history" rel="history"/>
    <content type="text/xml">
      <s:dict>
        <s:key name="eai:acl">
          <s:dict>
            <s:key name="app">some_name</s:key>
            <s:key name="can_change_perms">1</s:key>
          </s:dict>
        </s:key>
      </s:dict>
    </content>

Я хочу получить значение тегов title , id в теге entry т.е. MyTitle & https://website.com и s: имя ключа = "приложение" т.е. some_name .Поскольку у этого XML есть namesapce, я использовал приведенный ниже код для получения title и id

for ele in root.findall('{http://www.w3.org/2005/Atom}entry'):
        name = ele.find('{http://www.w3.org/2005/Atom}title')
        url = ele.find('{http://www.w3.org/2005/Atom}id')

, но когда дело доходит до s: key name = "app" Я не могу получить значение. Я попытался использовать приведенный ниже код для получения значения:

for app in root.findall('{http://a9.com/-/spec/opensearch/1.1/}s:dict'):
        app_name = app.find('{http://a9.com/-/spec/opensearch/1.1/}s:key}')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...