library("XML")
library("dplyr")
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library("magrittr")
library("knitr")
library("xtable")
docV <- xmlParse(fileNameV, useInternalNodes = TRUE)
### convert xmldf into List
docL <- xmlToList(docV)
Key.cli <- c()
Paese <- c()
PI <- c()
Key.ft <- c()
Key1 <- c()
Tipo <- c()
DataFt <- c()
NumFt <-  c()
Key.el <- c()
Key2 <- c()
Key3 <- c()
Imponibile <- c()
Imposta <- c()
Aliquota <- c()
Nat.Esig <- c()
for (i in 2:length(docL$DTE)) {
  Key.cli <- c(Key.cli, i-1)
  Paese <- c(Paese, docL$DTE[[i]][[1]][[1]][[1]])
  PI <-    c(PI,    docL$DTE[[i]][[1]][[1]][[2]])
  
  for (j in 3:length(docL$DTE[[i]])) {
    Key.ft <- c(Key.ft, j-2)
    Key1 <- c(Key1, i-1)
    Tipo <- c(Tipo,     docL$DTE[[i]][[j]][[1]][[1]])
    DataFt <- c(DataFt, docL$DTE[[i]][[j]][[1]][[2]])
    NumFt <-c(NumFt,    docL$DTE[[i]][[j]][[1]][[3]])
   
    for (jj in 2:length(docL$DTE[[i]][[j]])) {
      Key2 <- c(Key2, i-1)
      Key3 <- c(Key3, j-2)
      Key.el <- c(Key.el, jj-1)
      Imponibile <- c(Imponibile, docL$DTE[[i]][[j]][[jj]][[1]])
      Imposta <- c(Imposta,       docL$DTE[[i]][[j]][[jj]][[2]][[1]])
      Aliquota <- c(Aliquota,     docL$DTE[[i]][[j]][[jj]][[2]][[2]])
      Nat.Esig <- c(Nat.Esig,     docL$DTE[[i]][[j]][[jj]][[3]])
    }
  }
}

df.cli <- data.frame( "Key.cli" = Key.cli,
                      "ID" = Paese,
                      "PI" = PI
                      )

df.ft <- data.frame( "Key.cli" = Key1,
                     "Key.ft" = Key.ft,
                     "Tipo" = Tipo, 
                     "DataFt" = as.Date(DataFt), 
                     "NumFt" = NumFt
                     )

df.el <- data.frame( "Key.cli" = Key2,
                     "Key.ft" = Key3,
                     "Key.el" = Key.el,
                     "Imponibile" = as.double(Imponibile),
                     "Imposta" = as.double(Imposta),
                     "Aliquota" = Aliquota,
                     "N.E." = Nat.Esig
                     )

tab <- inner_join(df.cli, df.ft)
## Joining, by = "Key.cli"
tab2 <- inner_join(tab, df.el)
## Joining, by = c("Key.cli", "Key.ft")
tab2$Key.cli <- NULL
tab2$Key.ft <- NULL
tab2$Key.el <- NULL
kable(tab2, format = "pandoc", digits = 2, 
      align = c('c','c','c','c','c','r','r','c','c'), 
      format.args = list(big.mark=".", 
                         decimal.mark = "," ))
ID PI Tipo DataFt NumFt Imponibile Imposta Aliquota N.E.
IT 00000000001 TD01 2017-01-01 1 100 22 22.00 I
IT 00000000001 TD01 2017-01-01 1 10 0 0.00 N4