2014-12-29 78 views
1

我有一個數據幀作爲數據框自定義XML

  Sales  PctSales 
Id1  12929.63  0.12278547 
Id2  90063.39  0.85528156 
Id3  2309.60  0.02193298 

我想保存在SQL Server中此數據。我正在使用RODBC。所以,我需要將其轉換爲XML。這可能看起來像這樣。

<salesReport> 
    <employee id="Id1" sales="12929.63" pctSales="0.12278547"/> 
    <employee id="Id2" sales="90063.39" pctSales="0.85528156"/> 
    <employee id="Id3" sales="2309.60" pctSales="0.02193298"/> 
</salesReport> 

輸入數據的第一列沒有列名。

+0

爲什麼你需要將其轉換爲'XML'? 'sqlSave'或'sqlUpdate'對我來說只適用於data.frame ... –

+0

我在數據庫端使用Stored Proc,此SP根據此數據集執行其他操作。 –

+0

我能夠得到有點類似的結果,但第一列,因爲它沒有colname創建問題的任何建議? –

回答

2

有許多在XML封裝方法來構造XML:

library(XML) 
myData <- read.table(text = "Sales  PctSales 
Id1  12929.63  0.12278547 
Id2  90063.39  0.85528156 
Id3  2309.60  0.02193298", header = TRUE, row.names = 1 
        , stringsAsFactors = FALSE) 
myData$id <- rownames(myData) 
names(myData) <- c("id", "sales", "pctSales") 

con <- xmlOutputDOM("salesReport") 
for(i in seq(nrow(myData))){ 
    con$addTag("employee", attrs = myData[i,]) 
} 

> con$value() 
<salesReport> 
    <employee sales="12929.63" pctSales="0.12278547" id="Id1"/> 
    <employee sales="90063.39" pctSales="0.85528156" id="Id2"/> 
    <employee sales="2309.6" pctSales="0.02193298" id="Id3"/> 
</salesReport> 

我發現使用XML包可能會很慢但是和簡單的情況下,我只是用一個模板和喜歡的東西構建XMLwhisker包。

要導出XML作爲一個字符串使用saveXML

> cat(saveXML(con$value())) 
<?xml version="1.0"?> 
<salesReport> 
<employee id="12929.63" sales="0.12278547" pctSales="Id1"/> 
<employee id="90063.39" sales="0.85528156" pctSales="Id2"/> 
<employee id="2309.6" sales="0.02193298" pctSales="Id3"/> 
</salesReport>