2013-03-06 16 views
5

this government websiteのAPIから少しのデータのダウンロードを自動化しようとしています。APIにXMLリクエストを送信する方法R

ウェブサイトに指示:私は、XML要求を送信する方法についての情報をたくさん見つけることができます

All requests for this version should be made to the following URL: 
http://api.finder.healthcare.gov/v2.0/ 

が、例のいずれもR固有ではない...とRコードの多くを示しているそこにありますXMLhttr、およびRCurlパッケージを使用していますが、SOまたはrヘルプメールリストの例は実際には見つかりませんでした。にXMLリクエストを送信してください。 ..レスポンスを解析するための詳細なドキュメントがあります。

the government websiteの場合は、PlansForIndividualOrFamily Samplesの例をクリックすると、送信する必要があるxmlリクエスト(下のコード)が表示されます。

url <- "http://api.finder.healthcare.gov/v2.0/" 

xml.request <- 
    "<?xml version='1.0' encoding='UTF-8'?> 
    <PrivateOptionsAPIRequest> 
     <PlansForIndividualOrFamilyRequest> 
      <Enrollees> 
       <Primary> 
        <DateOfBirth>1990-01-01</DateOfBirth> 
        <Gender>Male</Gender> 
        <TobaccoUser>Smoker</TobaccoUser> 
       </Primary> 
      </Enrollees> 
      <Location> 
       <ZipCode>69201</ZipCode> 
       <County> 
        <CountyName>CHERRY</CountyName> 
        <StateCode>NE</StateCode> 
       </County> 
      </Location> 
      <InsuranceEffectiveDate>2012-10-01</InsuranceEffectiveDate> 
     <IsFilterAnalysisRequiredIndicator>false</IsFilterAnalysisRequiredIndicator> 
     <PaginationInformation> 
      <PageNumber>1</PageNumber> 
      <PageSize>10</PageSize> 
     </PaginationInformation> 
     <SortOrder> 
      <SortField>OOP LIMIT - INDIVIDUAL - IN NETWORK</SortField> 
      <SortDirection>ASC</SortDirection> 
     </SortOrder> 
     <Filter/> 
     </PlansForIndividualOrFamilyRequest> 
    </PrivateOptionsAPIRequest>" 
+0

あなたはhttp://api.finder.healthcare.gov/v2.0/にXMLリクエストを送信する方法を知っていますか? – obautista

答えて

9

RCurlを使用してください。

myheader=c(Connection="close", 
      'Content-Type' = "application/xml", 
      'Content-length' =nchar(xml.request)) 
data = getURL(url = url, 
        postfields=xml.request, 
        httpheader=myheader, 
        verbose=TRUE) 

それはそれです。次に、XMLパッケージxpathApplyを使用してデータを取得できます。たとえば、家族を取得するID:

library(XML) 
xmltext <- xmlTreeParse(data, asText = TRUE,useInternalNodes=T) 
unlist(xpathApply(xmltext,'//Plan/PlanID',xmlValue)) ## change the right xpath here 

"29678NE0780012" "29678NE0780011" "29678NE0140010" 
    "29678NE0780010" "29678NE0140019" "29678NE0140018" "29678NE0140017" 
    "29678NE0140016" "29678NE0780005" "29678NE0780004" 
+1

素晴らしい。ありがとうございました :) –

関連する問題