Разбор XML извлекается как необработанный текст - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь автоматизировать получение XML do c с веб-страницы с использованием селена через python. Я могу получить данные в текстовом формате. Я хочу иметь возможность легко анализировать данные, но у меня возникают проблемы с преобразованием текста в объект XML, с помощью которого я могу легко перемещаться по данным. Ниже приведены данные XML, которые извлекаются в виде необработанного текста.

<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope
    xmlns:S="http://xxxxxxx.xmlxxxx.org/xxxx/envelope/">
    <S:Body>
        <ns2:getSubscriptionInformationResponse
            xmlns:ns2="http://xxxcommand.xxxxbridge.xxxxxxx.xxx.xxxxxxx.com/">
            <resultData>
                <errorCode>0</errorCode>
                <message>Subscription information successfully retrieved</message>
                <submissionDate>1584549875045</submissionDate>
                <completionDate>1584549875051</completionDate>
                <currentState>ACTIVATED</currentState>
                <programmingState>3</programmingState>
            </resultData>
        </ns2:getSubscriptionInformationResponse>
    </S:Body>
</S:Envelope>

Ниже приведен мой код для преобразования текста в объект XML, однако при попытке получить значение для атрибута "currentState" "Я получаю сообщение об ошибке, что индекс выходит за пределы диапазона. Любой вставленный индекс дает ошибку вне диапазона, но если я уберу индекс, то ничего не печатается.

print (subInfo [4] .attributes ["resultData"]. Value)

IndexError: список индексов выходит за пределы диапазона

    xml_txt = browser.find_element_by_id('xmldisplay').text

    print("XML TEXT")
    print(xml_txt)

    xmldom = dom.parseString(xml_txt)
    print("XML DOM OBJECT")
    print(xmldom)

    #xml_pretty = xmldom.toprettyxml()
    xml_doc = xmldom.toxml()
    print("XML DOC OBJECT")
    print(xml_doc)

    print("'currentState' VALUE")
    subInfo = xmldom.getElementsByTagNameNS("getSubscriptionInformationResponse",   \      
       "http://xxxcommand.xxxxbridge.xxxxxxx.xxx.xxxxxxx.com/")
    print(subInfo[4].attributes["resultData"].value)

Примечание. Я не опубликовал весь код, а только ту часть, в которой у меня возникли проблемы с анализом объекта xml

* Использование firefox вебдрайвер

...