Проблемы при создании фрейма данных в R на основе результатов запроса SOAP (RCurl) - PullRequest
0 голосов
/ 26 октября 2019

Я получил данные XML с помощью запроса SOAP (через RCurl). Данные содержат список из 10 юридических решений, поскольку я хотел бы извлечь две части информации («Entscheidungsart» и «Gericht») и поместить их в кадр данных.

К сожалению, XPath не кажутсяработать на меня, в результате чего пустой фрейм данных.

  library(RCurl)   headerFields =
    c(Accept = "text/xml",
      Accept = "multipart/*",
      'Content-Type' = "text/xml; charset=utf-8",
      SOAPAction = "http://ris.bka.gv.at/ogd/V2_5/SearchDocuments")   
##############
body <- '<?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <SearchDocuments xmlns="http://ris.bka.gv.at/ogd/V2_5">
          <query>
            <Suche>
            <Judikatur>
              <Dokumenttyp>
                <SucheInRechtssaetzen>0</SucheInRechtssaetzen>
                <SucheInEntscheidungstexten>1</SucheInEntscheidungstexten>
              </Dokumenttyp>
              <Vfgh>
                <Entscheidungsart>Undefined</Entscheidungsart>
                <Index>*</Index>
                <Sammlungsnummer>*</Sammlungsnummer>
                <Sortierung xsi:type="VfghSortExpression">
                  <SortDirection>Ascending</SortDirection>
                  <SortedByColumn>Datum</SortedByColumn>
                </Sortierung>
              </Vfgh>
              <ImRisSeit>Undefined</ImRisSeit>
              <DokumenteProSeite>Ten</DokumenteProSeite>
              <Seitennummer>1</Seitennummer>
            </Judikatur>
            </Suche>
          </query>
        </SearchDocuments>
      </soap:Body>
    </soap:Envelope>'   
##############
reader = basicTextGatherer()   
curlPerform(url = "https://data.bka.gv.at/ris/ogd/v2.5/ogdrisservice.asmx",
              httpheader = headerFields,
              postfields = body, 
              writefunction = reader$update) 
##############
doc <- xmlParse(reader$value())   
root <- xmlRoot(doc)   
data = data.frame(Entscheidungsart = xpathSApply(doc,"//Entscheidungsart", xmlValue),
                    Gericht = xpathSApply(doc,"//Gericht", xmlValue))
...