2017-06-19 8 views
0

日常的な収入のリストを取得し、これらの収入を標準XMLテンプレートに入力するスクリプトを作成します。これは現在、所得価値が存在すべきプレースホルダーを持っています。目的は、固有の日付と所得フィールドを持つn個(この場合は3個)のapi対応XMLプロダクトを生成することです。実際のデータは機密扱いで掲載す​​ることはできませんので、簡略化したバージョンを生成しました。私は、それぞれが「ユニークな毎日収入が含まれていることを除いて、上記と同様のXMLテンプレートのシリーズを、生成する、と言って、forループまたはLApply機能使用して、方法を把握することはできませんrループを使用して、リストのデータを使用して各ループにテンプレートを繰り返し入力する方法

Date Income 
     <chr> <dbl> 
1 20/06/2017 2000 
2 22/06/2017 3023 
3 23/06/2017 4021 

XML 
# 
<Date>holding_date</Date> 
<LineAmountTypes>Inclusive</LineAmountTypes> 
<Description>total daily income</Description> 
<LineAmount>holding_lineamount_value</LineAmount> 
</LineItem></LineItem> 
<BankAccount> 
    <Code>value</Code> 
</BankAccount> 

hold_lineamount_value "は現在です。

これは手動ではっきりと行うことができますが、私はこれを毎日の所得と日付の何百ものために再現可能にする必要があります。

誰かが私が迷子になってこのタスクを完了するためのforループまたは代替を構築するのを手助けできますか?

答えて

2

最後のXML構造がどのように見えるかは、あなたの説明からはあまり明確ではありません。しかし、これにより、データフレーム内の各データ行に対して新しいXML文書を作成することができます。

library(XML) 

# Create function to generate an XML file 
createXML <- function(x){ 
    # Get data from current column being processed 
    holding_date <- x[1] 
    holding_lineamount_value <- x[2] 

    # Create main node 
    xmlfile <- newXMLNode("MainXML") 

    # Add nodes to main node 
    xmlfile <- addChildren(xmlfile, newXMLNode("Date", holding_date)) 
    xmlfile <- addChildren(xmlfile, newXMLNode("LineAmountTypes", "Inclusive")) 
    xmlfile <- addChildren(xmlfile, newXMLNode("Description", "total daily income")) 
    xmlfile <- addChildren(xmlfile, newXMLNode("LineAmount", holding_lineamount_value)) 
    xmlfile <- addChildren(xmlfile, newXMLNode("LineItem")) 
    xmlfile <- addChildren(xmlfile, newXMLNode("LineItems")) 

    # Create BankAccount node 
    ba <- newXMLNode("BankAccount") 

    # Add Code node to BankAccount node 
    ba <- addChildren(ba, newXMLNode("Code","value")) 

    # Add BankAccount node to main node 
    xmlfile <- addChildren(xmlfile, ba) 

    # Return the xml file 
    return(xmlfile) 
} 

# Create dataframe 
df <- data.frame(Date = c("20/06/2017", "22/06/2017","23/06/2017"), 
       Income = c(2000,3023,4021), 
       stringsAsFactors = FALSE) 

# Transpose dataframe to be processed with lapply 
tdf <- as.data.frame(t(df)) 

# Create a list of XML files for each column of transposed dataframe 
xml.list <- lapply(tdf, createXML) 
関連する問題