В настоящее время у меня есть ответ XML от вызова API SOAP, который я проанализировал в порядке XMLInternalDocument
. У меня возникли проблемы с извлечением определенных узлов из обработанного ответа.Анализ XML-ответа в R
Ниже приведен подход, который я попытался извлечь из ответа XML.
library(XML)
responseparsed <- XML::xmlParse("response2.xml")
getNodeSet(responseparsed, "//Category")
Ответ я получаю пустой список (т.е. нет содержания в моем понимании)
# list()
# attr(,"class")
# [1] "XMLNodeSet"
Я в конечном итоге хочет получить мой ответ XML в data.frame, если это возможно, так будет на самом деле оцените некоторые указатели, потому что я также не мог получить xmlToList
, чтобы работать либо из-за <header>
, и < body>
оба находятся в пакете XML.
Если вы берете приведенный ниже фрагмент и создаете XML-файл с именем response2.xml
, тогда вы должны иметь возможность воспроизвести мою проблему.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<soap:Header>
<wsa:Action>RetrieveResponse</wsa:Action>
<wsa:MessageID>urn:uuid:mymessageid</wsa:MessageID>
<wsa:RelatesTo>urn:uuid:relatestoid</wsa:RelatesTo>
<wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
<wsse:Security><wsu:Timestamp wsu:Id="Timestamp-c74b9126-8c79-4624-abd1-de4021ce1096">
<wsu:Created>2015-08-13T12:38:54Z</wsu:Created>
<wsu:Expires>2015-08-13T12:43:54Z</wsu:Expires>
</wsu:Timestamp></wsse:Security>
</soap:Header>
<soap:Body>
<RetrieveResponseMsg xmlns="http://exacttarget.com/wsdl/partnerAPI">
<OverallStatus>OK</OverallStatus>
<RequestID>myanonrequestid</RequestID>
<Results xsi:type="List">
<Client>
<ID>6212693</ID>
</Client>
<PartnerKey xsi:nil="true" />
<ID>537</ID>
<ObjectID xsi:nil="true" />
<ListName>All Subscribers</ListName>
<Category>2151</Category>
<Type>Private</Type>
</Results>
<Results xsi:type="List">
<Client>
<ID>6212693</ID>
</Client>
<PartnerKey xsi:nil="true" />
<ID>1217</ID>
<ObjectID xsi:nil="true" />
<ListName>list A</ListName>
<Category>3038</Category>
<Type>Private</Type>
</Results>
<Results xsi:type="List">
<Client>
<ID>6212693</ID>
</Client><PartnerKey xsi:nil="true" />
<ID>1434</ID><ObjectID xsi:nil="true" />
<ListName>List B</ListName>
<Category>6362</Category>
<Type>Private</Type>
</Results>
<Results xsi:type="List">
<Client>
<ID>6212693</ID>
</Client>
<PartnerKey xsi:nil="true" />
<ID>1435</ID>
<ObjectID xsi:nil="true" />
<ListName> List C</ListName>
<Category>6362</Category>
<Type>Private</Type>
</Results>
</RetrieveResponseMsg>
</soap:Body>
</soap:Envelope>