将嵌套XML读入数据帧

时间:2016-10-07 21:38:14

标签: r xml xml-parsing

我无法将嵌套节点读入数据框。 XML只有两个我感兴趣的标签(见下面的例子)名为“Caratula”和“DTE” 我设法读取“Caratula”没有问题,但“DTE”有嵌套节点,我找不到正确读取它们的方法。 我正在使用的R代码是:

    # Carga las librerías necesarias.
library("XML")
library("methods")
library(xml2)
library(plyr)

#establece el directorio de trabajo
setwd("~/")

#coloca el nombre del archivo en una cadena
dte<-"Ejemplo.xml"

#carga el xml
a<-read_xml(dte)

#limpia los namespace
b<-xml_ns_strip(a)

#Parsea el xml en la librería XML
c<-xmlParse(b)

#genera el dataframe para la Caratula
Caratula <- xmlToDataFrame(nodes=getNodeSet(c,"//Caratula"))

使用“DTE”我从网上调整了代码(对不起,我不记得来源,但是谢谢)。当文件中只有一个“Detalle”嵌套节点时,此代码可以很好地工作。但它不止一个“Detalle”。

代码是:

    #genera el dataframe para los DTEs
d <- xmlParse(b, asText =  TRUE)
DTE <- do.call(rbind.fill, lapply(d['//DTE'], function(x) { 
  names <- xpathSApply(x, './/.', xmlName) 
  names <- names[which(names == "text") - 1]
  values <- xpathSApply(x, ".//text()", xmlValue)
  return(as.data.frame(t(setNames(values, names)), stringsAsFactors = FALSE))
}))

你能帮帮我吗?

下面的XML:

    <?xml version="1.0" encoding="ISO-8859-1"?>
<EnvioDTE xmlns="http://www.sii.cl/SiiDte" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" xsi:schemaLocation="http://www.sii.cl/SiiDte EnvioDTE_v10.xsd">
 <SetDTE ID="SetDoc">
  <Caratula version="1.0">
   <RutEmisor>88888888-8</RutEmisor>
   <RutEnvia>8414240-9</RutEnvia>
   <RutReceptor>76576212-K</RutReceptor>
   <FchResol>2003-05-16</FchResol>
   <NroResol>0</NroResol>
   <TmstFirmaEnv>2016-10-04T14:01:13</TmstFirmaEnv>
   <SubTotDTE>
    <TpoDTE>33</TpoDTE>
    <NroDTE>2</NroDTE>
   </SubTotDTE>
  </Caratula>
 <DTE xmlns="http://www.sii.cl/SiiDte" version="1.0">
 <Documento ID="T33">
  <Encabezado>
   <IdDoc>
    <TipoDTE>33</TipoDTE>
    <Folio>52725</Folio>
    <FchEmis>2016-10-04</FchEmis>
   </IdDoc>
   <Emisor>
    <RUTEmisor>88888888-8</RUTEmisor>
    <RznSoc>EMPRESA DE PRUEBA</RznSoc>
    <GiroEmis>Informatica</GiroEmis>
    <Acteco>1</Acteco>
    <CdgSIISucur>59529595</CdgSIISucur>
    <DirOrigen>Teatinos 120</DirOrigen>
    <CmnaOrigen>Santiago</CmnaOrigen>
    <CiudadOrigen>Santiago</CiudadOrigen>
   </Emisor>
   <Receptor>
    <RUTRecep>76576212-K</RUTRecep>
    <RznSocRecep>E-SERVICE SPA</RznSocRecep>
    <GiroRecep>Comercial</GiroRecep>
    <DirRecep>Santiago</DirRecep>
    <CmnaRecep>Santiago</CmnaRecep>
    <CiudadRecep>Santiago</CiudadRecep>
   </Receptor>
   <Totales>
    <MntNeto>19327</MntNeto>
    <TasaIVA>19</TasaIVA>
    <IVA>3672</IVA>
    <MntTotal>22999</MntTotal>
   </Totales>
  </Encabezado>
        <Detalle>
            <NroLinDet>1</NroLinDet>
            <CdgItem>
                <TpoCodigo>INT1</TpoCodigo>
                <VlrCodigo>011</VlrCodigo>
            </CdgItem>
            <NmbItem>Parlantes Multimedia 180W.</NmbItem>
            <DscItem/>
            <QtyItem>20</QtyItem>
            <PrcItem>4500</PrcItem>
            <MontoItem>90000</MontoItem>
        </Detalle>
        <Detalle>
            <NroLinDet>2</NroLinDet>
            <CdgItem>
                <TpoCodigo>INT1</TpoCodigo>
                <VlrCodigo>0231</VlrCodigo>
            </CdgItem>
            <NmbItem>Mouse Inalambrico PS/2</NmbItem>
            <DscItem/>
            <QtyItem>1</QtyItem>
            <PrcItem>5000</PrcItem>
            <MontoItem>5000</MontoItem>
        </Detalle>
        <Detalle>
            <NroLinDet>3</NroLinDet>
            <CdgItem>
                <TpoCodigo>INT1</TpoCodigo>
                <VlrCodigo>1515</VlrCodigo>
            </CdgItem>
            <NmbItem>Caja de Diskettes 10 Unidades</NmbItem>
            <DscItem/>
            <QtyItem>5</QtyItem>
            <PrcItem>1000</PrcItem>
            <MontoItem>5000</MontoItem>
        </Detalle>
  <TED version="1.0">
   <DD>
    <RE>88888888-8</RE>
    <TD>33</TD>
    <F>52725</F>
    <FE>2016-10-04</FE>
    <RR>76576212-K</RR>
    <RSR>E-SERVICE SPA</RSR>
    <MNT>22999</MNT>
    <IT1>SET INTERCAMBIO NUMERO 705929</IT1>
    <CAF version="1.0">
     <DA>
      <RE>88888888-8</RE>
      <RS>EMPRESA DE PRUEBA</RS>
      <TD>33</TD>
      <RNG>
       <D>17479</D>
       <H>17901</H>
      </RNG>
      <FA>2004-03-30</FA>
      <RSAPK>
       <M>umn8PR3gbC1L3CFheZb5Woh2bj51lvaN2OnwFdTncKXFutekvIAxPmso9DRhgQKJOjlKS1TEKxvzPAYIeEf3tw==</M>
       <E>Aw==</E>
      </RSAPK>
      <IDK>1</IDK>
     </DA>
     <FRMA algoritmo="SHA1withRSA">FVGanT5jYLSopnBQt7+t48aoLtKTYtFZHCV3c2Z2V3XAdExCke7XXONn9N4Lq1BPR24vnH/qCyvIxaYBVCtEMw==</FRMA>
    </CAF>
    <TSTED>2016-10-04T14:01:13</TSTED>
   </DD>
   <FRMT algoritmo="SHA1withRSA">V+YvYUaHFLHuOVg/n5aRxNSgcTkFj2DbGvlH5iyema8h42BNil8f7ewbk7rr5V+a1ShBHcXxU9DjDHWFnQ9p2w==</FRMT>
  </TED>
  <TmstFirma>2016-10-04T14:01:13</TmstFirma>
 </Documento>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#T33">
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>LwtihgKaAyu3Szq+NW/QiPHjm24=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>
bnp4e4f6iFP2SG6bplb13aVcf0VUC4ugqmB3GEF4kr2r6AVn+TpcvCGARwpqckUXJZTJ1eXPHKgy
2y79oO3sotyBvGTJG2lDtFhIYvB/7ntKSN4Y1YdTC8t3kscVVB2DPA8CPcX4NVx873o1w46RO/5Z
XZo/rMThRs1w6uG/mRhLQJ5MdXwl38PC46Ji0q9ERKGxDVIufAWpM6joc3Bra7hMFqQcdqH0RQWu
Jo1Ue7gCBzZK1hA2HcxUP5IS5ZJ6UrZU6qLAaqJRChw9auXTTpnxY9SSBL5cy4CRReO3U9dVxReK
WtJ6jPyh1FpsNvkFWMzrEMxu0nE48PLSCw9WAA==
</SignatureValue>
<KeyInfo>
<KeyValue>
<RSAKeyValue>
<Modulus>
muHYq0PQCNG/sSdh+7bcDh3QFr8RGSRezbJErsC3um9weS1HbHuISNQjPIuJFmfzwA+Zdly1w3bC
HSDs1RGpN6wuqe5aM/q0YThDNGVA2UC5NJk+krYRYs3VtxhvprXa8J1C8MIKD+yTie72OcA15xiE
+s+LaMBg9v8/qJoXaeuTLkYcAAx52yVX2vpE4bIpfOZVkQEVQq2zVxgdhjNGGbCQC4pNR9t7Yn8B
lbWnQeaqSaB9ikDDz3T+QiLNbA9NAPjFW7m+WIQ8A8HtxpdaLLyBudqptSqhwTlSKu6tjdC/ZL+8
PnRWye87/MS7MLlfGWQ55BRqyn+rxxkb9QqIaQ==
</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>
</KeyValue>
<X509Data>
<X509Certificate>
MIIEgzCCA2ugAwIBAgIBQzANBgkqhkiG9w0BAQUFADCBpTEUMBIGA1UEAxMLU0lJLUNBLTIwMTMx
GjAYBgNVBAcTEVNhbnRpYWdvIGRlIENoaWxlMR0wGwYDVQQIExRSZWdpb24gTWV0cm9wb2xpdGFu
YTELMAkGA1UEBhMCQ0wxHDAaBgkqhkiG9w0BCQEWDXNpaS1jYUBzaWkuY2wxJzAlBgNVBAoTHlNl
cnZpY2lvIGRlIEltcHVlc3RvcyBJbnRlcm5vczAeFw0xNTAzMjcxNTM3MzdaFw0xNzAzMjYxNTM3
MzdaMIHwMSQwIgYDVQQLExtTdWJkaXJlY2Npb24gZGUgSW5mb3JtYXRpY2ExJzAlBgNVBAoTHlNl
cnZpY2lvIGRlIEltcHVlc3RvcyBJbnRlcm5vczELMAkGA1UEBhMCQ0wxHTAbBgNVBAgTFFJlZ2lv
biBNZXRyb3BvbGl0YW5hMRowGAYDVQQHExFTYW50aWFnbyBkZSBDaGlsZTEmMCQGCSqGSIb3DQEJ
ARYXU0lJX2R0ZV9pbXByZXNvc0BzaWkuY2wxLzAtBgNVBAMTJlBSVUVCQSBTT1BPUlRFIEZBQ1RV
UkEgRUxFQ1RST05JQ0EgU0lJMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmuHYq0PQ
CNG/sSdh+7bcDh3QFr8RGSRezbJErsC3um9weS1HbHuISNQjPIuJFmfzwA+Zdly1w3bCHSDs1RGp
N6wuqe5aM/q0YThDNGVA2UC5NJk+krYRYs3VtxhvprXa8J1C8MIKD+yTie72OcA15xiE+s+LaMBg
9v8/qJoXaeuTLkYcAAx52yVX2vpE4bIpfOZVkQEVQq2zVxgdhjNGGbCQC4pNR9t7Yn8BlbWnQeaq
SaB9ikDDz3T+QiLNbA9NAPjFW7m+WIQ8A8HtxpdaLLyBudqptSqhwTlSKu6tjdC/ZL+8PnRWye87
/MS7MLlfGWQ55BRqyn+rxxkb9QqIaQIDAQABo3EwbzAJBgNVHRMEAjAAMD0GA1UdEQQ2MDSgGAYI
KwYBBAHBAQGgDBMKNDUwMDAwNTItM6AYBggrBgEEAcEBA6AMEwo2MDgwMzAwMC1LMCMGA1UdEgQc
MBqgGAYIKwYBBAHBAQKgDBMKNjA4MDMwMDAtSzANBgkqhkiG9w0BAQUFAAOCAQEASo7TMMU3Vi0C
meIOQ3k85daCtbRLA5jzmoyGdVXZmF4ibgeRmsoKBzwBA5IciI25XWhnuhNQZECC4lg45I5cEFWN
7Jn90ZEDwtOIifmAemmrx1TzcK2gflM2eLub3Do9WcCAqjh9Xs7SUnhfH0ExhqWJYKXe+TeJJmwV
HRae9A+wIB56f8UroMGrHKwFdKOPCLtk7Unr3I9sisQsRPeEYMRuxJXKPR49ZDi9tbD7Cku/GCoK
qB4g+kJCOGZAjuESRjWR8FyfJEQ3OjdAO9hBoQj+SVrrgnJkOFcH1ue2BAVOMLKUAlWkVlcoCSV1
ip01mMmoZOXlzx6hhAfajFrwiA==
</X509Certificate>
</X509Data>
</KeyInfo>
</Signature></DTE><DTE xmlns="http://www.sii.cl/SiiDte" version="1.0">
 <Documento ID="T35">
  <Encabezado>
   <IdDoc>
    <TipoDTE>33</TipoDTE>
    <Folio>52726</Folio>
    <FchEmis>2013-06-21</FchEmis>
   </IdDoc>
   <Emisor>
    <RUTEmisor>88888888-8</RUTEmisor>
    <RznSoc>EMPRESA DE PRUEBA</RznSoc>
    <GiroEmis>Informatica</GiroEmis>
    <Acteco>1</Acteco>
    <CdgSIISucur>59529595</CdgSIISucur>
    <DirOrigen>Teatinos 120</DirOrigen>
    <CmnaOrigen>Santiago</CmnaOrigen>
    <CiudadOrigen>Santiago</CiudadOrigen>
   </Emisor>
   <Receptor>
    <RUTRecep>69507000-4</RUTRecep>
    <RznSocRecep>RUT DE PRUEBA PORTAL</RznSocRecep>
    <GiroRecep>Comercial</GiroRecep>
    <DirRecep>Santiago</DirRecep>
    <CmnaRecep>Santiago</CmnaRecep>
    <CiudadRecep>Santiago</CiudadRecep>
   </Receptor>
   <Totales>
    <MntNeto>26327</MntNeto>
    <TasaIVA>19</TasaIVA>
    <IVA>5002</IVA>
    <MntTotal>31329</MntTotal>
   </Totales>
  </Encabezado>
        <Detalle>
            <NroLinDet>1</NroLinDet>
            <CdgItem>
                <TpoCodigo>INT1</TpoCodigo>
                <VlrCodigo>011</VlrCodigo>
            </CdgItem>
            <NmbItem>Parlantes Multimedia 180W.</NmbItem>
            <DscItem/>
            <QtyItem>20</QtyItem>
            <PrcItem>4500</PrcItem>
            <MontoItem>90000</MontoItem>
        </Detalle>
        <Detalle>
            <NroLinDet>2</NroLinDet>
            <CdgItem>
                <TpoCodigo>INT1</TpoCodigo>
                <VlrCodigo>0231</VlrCodigo>
            </CdgItem>
            <NmbItem>Mouse Inalambrico PS/2</NmbItem>
            <DscItem/>
            <QtyItem>1</QtyItem>
            <PrcItem>5000</PrcItem>
            <MontoItem>5000</MontoItem>
        </Detalle>
        <Detalle>
            <NroLinDet>3</NroLinDet>
            <CdgItem>
                <TpoCodigo>INT1</TpoCodigo>
                <VlrCodigo>1515</VlrCodigo>
            </CdgItem>
            <NmbItem>Caja de Diskettes 10 Unidades</NmbItem>
            <DscItem/>
            <QtyItem>5</QtyItem>
            <PrcItem>1000</PrcItem>
            <MontoItem>5000</MontoItem>
        </Detalle>
  <TED version="1.0">
   <DD>
    <RE>88888888-8</RE>
    <TD>33</TD>
    <F>52726</F>
    <FE>2013-06-21</FE>
    <RR>69507000-4</RR>
    <RSR>RUT DE PRUEBA PORTAL</RSR>
    <MNT>31329</MNT>
    <IT1>SET INTERCAMBIO NUMERO 705929</IT1>
    <CAF version="1.0">
     <DA>
      <RE>88888888-8</RE>
      <RS>EMPRESA DE PRUEBA</RS>
      <TD>33</TD>
      <RNG>
       <D>17479</D>
       <H>17901</H>
      </RNG>
      <FA>2004-03-30</FA>
      <RSAPK>
       <M>umn8PR3gbC1L3CFheZb5Woh2bj51lvaN2OnwFdTncKXFutekvIAxPmso9DRhgQKJOjlKS1TEKxvzPAYIeEf3tw==</M>
       <E>Aw==</E>
      </RSAPK>
      <IDK>1</IDK>
     </DA>
     <FRMA algoritmo="SHA1withRSA">FVGanT5jYLSopnBQt7+t48aoLtKTYtFZHCV3c2Z2V3XAdExCke7XXONn9N4Lq1BPR24vnH/qCyvIxaYBVCtEMw==</FRMA>
    </CAF>
    <TSTED>2016-10-04T14:01:13</TSTED>
   </DD>
   <FRMT algoritmo="SHA1withRSA">V+YvYUaHFLHuOVg/n5aRxNSgcTkFj2DbGvlH5iyema8h42BNil8f7ewbk7rr5V+a1ShBHcXxU9DjDHWFnQ9p2w==</FRMT>
  </TED>
  <TmstFirma>2016-10-04T14:01:13</TmstFirma>
 </Documento>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#T35">
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>GrgWYwI8pTMvAnLJqJAEoK7VGQA=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>
Zo2tHz/pCm+60Kop0VHmfr/+ppdnvRCgGbytgUf0yPj43C3G/mKzNJsE97x4lfaCGBw9bpY8ql70
pdOpash7+S/6iyNJI8KuBVQa4HNdtQB92sh3Of5DzHoKVc+qgmgk2y9IgVsm+16tyzShTlBhg0Aw
6s4AWElg0Ui7Gox6u3A2iuk50MDmIoqOjt2u1sl6IqFMSmGlzeH4vuzkXT+qNSy5EZ+ZwD52ipEH
NNN3QEtlBtI3+h7qvZ7e8Iroy+sFG8Odhy06KaJBPKLC5YouMl3xG4mcuF/hbgkAp1CYRSWs31ub
CbnWAMCsfu8lmnLwN3YUe/cnfoz8oNU69mSl4g==
</SignatureValue>
<KeyInfo>
<KeyValue>
<RSAKeyValue>
<Modulus>
muHYq0PQCNG/sSdh+7bcDh3QFr8RGSRezbJErsC3um9weS1HbHuISNQjPIuJFmfzwA+Zdly1w3bC
HSDs1RGpN6wuqe5aM/q0YThDNGVA2UC5NJk+krYRYs3VtxhvprXa8J1C8MIKD+yTie72OcA15xiE
+s+LaMBg9v8/qJoXaeuTLkYcAAx52yVX2vpE4bIpfOZVkQEVQq2zVxgdhjNGGbCQC4pNR9t7Yn8B
lbWnQeaqSaB9ikDDz3T+QiLNbA9NAPjFW7m+WIQ8A8HtxpdaLLyBudqptSqhwTlSKu6tjdC/ZL+8
PnRWye87/MS7MLlfGWQ55BRqyn+rxxkb9QqIaQ==
</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>
</KeyValue>
<X509Data>
<X509Certificate>
MIIEgzCCA2ugAwIBAgIBQzANBgkqhkiG9w0BAQUFADCBpTEUMBIGA1UEAxMLU0lJLUNBLTIwMTMx
GjAYBgNVBAcTEVNhbnRpYWdvIGRlIENoaWxlMR0wGwYDVQQIExRSZWdpb24gTWV0cm9wb2xpdGFu
YTELMAkGA1UEBhMCQ0wxHDAaBgkqhkiG9w0BCQEWDXNpaS1jYUBzaWkuY2wxJzAlBgNVBAoTHlNl
cnZpY2lvIGRlIEltcHVlc3RvcyBJbnRlcm5vczAeFw0xNTAzMjcxNTM3MzdaFw0xNzAzMjYxNTM3
MzdaMIHwMSQwIgYDVQQLExtTdWJkaXJlY2Npb24gZGUgSW5mb3JtYXRpY2ExJzAlBgNVBAoTHlNl
cnZpY2lvIGRlIEltcHVlc3RvcyBJbnRlcm5vczELMAkGA1UEBhMCQ0wxHTAbBgNVBAgTFFJlZ2lv
biBNZXRyb3BvbGl0YW5hMRowGAYDVQQHExFTYW50aWFnbyBkZSBDaGlsZTEmMCQGCSqGSIb3DQEJ
ARYXU0lJX2R0ZV9pbXByZXNvc0BzaWkuY2wxLzAtBgNVBAMTJlBSVUVCQSBTT1BPUlRFIEZBQ1RV
UkEgRUxFQ1RST05JQ0EgU0lJMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmuHYq0PQ
CNG/sSdh+7bcDh3QFr8RGSRezbJErsC3um9weS1HbHuISNQjPIuJFmfzwA+Zdly1w3bCHSDs1RGp
N6wuqe5aM/q0YThDNGVA2UC5NJk+krYRYs3VtxhvprXa8J1C8MIKD+yTie72OcA15xiE+s+LaMBg
9v8/qJoXaeuTLkYcAAx52yVX2vpE4bIpfOZVkQEVQq2zVxgdhjNGGbCQC4pNR9t7Yn8BlbWnQeaq
SaB9ikDDz3T+QiLNbA9NAPjFW7m+WIQ8A8HtxpdaLLyBudqptSqhwTlSKu6tjdC/ZL+8PnRWye87
/MS7MLlfGWQ55BRqyn+rxxkb9QqIaQIDAQABo3EwbzAJBgNVHRMEAjAAMD0GA1UdEQQ2MDSgGAYI
KwYBBAHBAQGgDBMKNDUwMDAwNTItM6AYBggrBgEEAcEBA6AMEwo2MDgwMzAwMC1LMCMGA1UdEgQc
MBqgGAYIKwYBBAHBAQKgDBMKNjA4MDMwMDAtSzANBgkqhkiG9w0BAQUFAAOCAQEASo7TMMU3Vi0C
meIOQ3k85daCtbRLA5jzmoyGdVXZmF4ibgeRmsoKBzwBA5IciI25XWhnuhNQZECC4lg45I5cEFWN
7Jn90ZEDwtOIifmAemmrx1TzcK2gflM2eLub3Do9WcCAqjh9Xs7SUnhfH0ExhqWJYKXe+TeJJmwV
HRae9A+wIB56f8UroMGrHKwFdKOPCLtk7Unr3I9sisQsRPeEYMRuxJXKPR49ZDi9tbD7Cku/GCoK
qB4g+kJCOGZAjuESRjWR8FyfJEQ3OjdAO9hBoQj+SVrrgnJkOFcH1ue2BAVOMLKUAlWkVlcoCSV1
ip01mMmoZOXlzx6hhAfajFrwiA==
</X509Certificate>
</X509Data>
</KeyInfo>
</Signature></DTE></SetDTE>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#SetDoc">
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>VZqUefe4hYx9epyMteRTgGX1umk=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>
SglAbtDkgzxDPDJUeTfhZ4Rhri+d2Wo3mpC5VhnxSl6com7kododDm07zOqCPnTV7qEuP3PSDXeW
OHu+sTZfFV10EhM4eWs5HsEM8s3ncLvJYtDWi2uXlV6gJTN/p0hq1wQBwID6+pP7NHzitI7oDNMp
XIJ6gKvpUzvvmZm8/Uyirw3wbkjoK206ghFMOrwo/XechNqs+nkIjZxLqz5mQInhsr2Z96i30syF
jb3Fgbb5vNsOtnKJ6dtvvarRDzxneIAp3gttZDn9d1uCQMt5CxcQi3ipOMYgqsyW6DxX1hgMgMwV
SdSDD4pJ3xWyUfb4L4eQaN9ESOnh6P3sie3IKQ==
</SignatureValue>
<KeyInfo>
<KeyValue>
<RSAKeyValue>
<Modulus>
muHYq0PQCNG/sSdh+7bcDh3QFr8RGSRezbJErsC3um9weS1HbHuISNQjPIuJFmfzwA+Zdly1w3bC
HSDs1RGpN6wuqe5aM/q0YThDNGVA2UC5NJk+krYRYs3VtxhvprXa8J1C8MIKD+yTie72OcA15xiE
+s+LaMBg9v8/qJoXaeuTLkYcAAx52yVX2vpE4bIpfOZVkQEVQq2zVxgdhjNGGbCQC4pNR9t7Yn8B
lbWnQeaqSaB9ikDDz3T+QiLNbA9NAPjFW7m+WIQ8A8HtxpdaLLyBudqptSqhwTlSKu6tjdC/ZL+8
PnRWye87/MS7MLlfGWQ55BRqyn+rxxkb9QqIaQ==
</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>
</KeyValue>
<X509Data>
<X509Certificate>
MIIEgzCCA2ugAwIBAgIBQzANBgkqhkiG9w0BAQUFADCBpTEUMBIGA1UEAxMLU0lJLUNBLTIwMTMx
GjAYBgNVBAcTEVNhbnRpYWdvIGRlIENoaWxlMR0wGwYDVQQIExRSZWdpb24gTWV0cm9wb2xpdGFu
YTELMAkGA1UEBhMCQ0wxHDAaBgkqhkiG9w0BCQEWDXNpaS1jYUBzaWkuY2wxJzAlBgNVBAoTHlNl
cnZpY2lvIGRlIEltcHVlc3RvcyBJbnRlcm5vczAeFw0xNTAzMjcxNTM3MzdaFw0xNzAzMjYxNTM3
MzdaMIHwMSQwIgYDVQQLExtTdWJkaXJlY2Npb24gZGUgSW5mb3JtYXRpY2ExJzAlBgNVBAoTHlNl
cnZpY2lvIGRlIEltcHVlc3RvcyBJbnRlcm5vczELMAkGA1UEBhMCQ0wxHTAbBgNVBAgTFFJlZ2lv
biBNZXRyb3BvbGl0YW5hMRowGAYDVQQHExFTYW50aWFnbyBkZSBDaGlsZTEmMCQGCSqGSIb3DQEJ
ARYXU0lJX2R0ZV9pbXByZXNvc0BzaWkuY2wxLzAtBgNVBAMTJlBSVUVCQSBTT1BPUlRFIEZBQ1RV
UkEgRUxFQ1RST05JQ0EgU0lJMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmuHYq0PQ
CNG/sSdh+7bcDh3QFr8RGSRezbJErsC3um9weS1HbHuISNQjPIuJFmfzwA+Zdly1w3bCHSDs1RGp
N6wuqe5aM/q0YThDNGVA2UC5NJk+krYRYs3VtxhvprXa8J1C8MIKD+yTie72OcA15xiE+s+LaMBg
9v8/qJoXaeuTLkYcAAx52yVX2vpE4bIpfOZVkQEVQq2zVxgdhjNGGbCQC4pNR9t7Yn8BlbWnQeaq
SaB9ikDDz3T+QiLNbA9NAPjFW7m+WIQ8A8HtxpdaLLyBudqptSqhwTlSKu6tjdC/ZL+8PnRWye87
/MS7MLlfGWQ55BRqyn+rxxkb9QqIaQIDAQABo3EwbzAJBgNVHRMEAjAAMD0GA1UdEQQ2MDSgGAYI
KwYBBAHBAQGgDBMKNDUwMDAwNTItM6AYBggrBgEEAcEBA6AMEwo2MDgwMzAwMC1LMCMGA1UdEgQc
MBqgGAYIKwYBBAHBAQKgDBMKNjA4MDMwMDAtSzANBgkqhkiG9w0BAQUFAAOCAQEASo7TMMU3Vi0C
meIOQ3k85daCtbRLA5jzmoyGdVXZmF4ibgeRmsoKBzwBA5IciI25XWhnuhNQZECC4lg45I5cEFWN
7Jn90ZEDwtOIifmAemmrx1TzcK2gflM2eLub3Do9WcCAqjh9Xs7SUnhfH0ExhqWJYKXe+TeJJmwV
HRae9A+wIB56f8UroMGrHKwFdKOPCLtk7Unr3I9sisQsRPeEYMRuxJXKPR49ZDi9tbD7Cku/GCoK
qB4g+kJCOGZAjuESRjWR8FyfJEQ3OjdAO9hBoQj+SVrrgnJkOFcH1ue2BAVOMLKUAlWkVlcoCSV1
ip01mMmoZOXlzx6hhAfajFrwiA==
</X509Certificate>
</X509Data>
</KeyInfo>
</Signature></EnvioDTE>

1 个答案:

答案 0 :(得分:0)

这不会获取属性,但它可能是您的问题的快速解决方法:

library(jsonlite)
library(ndjson)
library(xml2)
library(purrr)
library(dplyr)

doc <- read_xml("~/data/doc.xml")
ns <- xml_ns_rename(xml_ns(doc), d1="a1", d2="a2", d3="a3")

documents <- xml_find_all(doc, ".//a2:DTE/a2:Documento", ns)
map_df(documents, function(x) {
  as_list(x) %>% toJSON() %>% ndjson::flatten()
}) %>% glimpse()
## Observations: 2
## Variables: 66
## $ Detalle.1.CdgItem.TpoCodigo.0.0     <chr> "INT1", "INT1"
## $ Detalle.1.CdgItem.VlrCodigo.0.0     <chr> "0231", "0231"
## $ Detalle.1.DscItem                   <int> NA, NA
## $ Detalle.1.MontoItem.0.0             <chr> "5000", "5000"
## $ Detalle.1.NmbItem.0.0               <chr> "Mouse Inalambrico PS/2", ...
## $ Detalle.1.NroLinDet.0.0             <chr> "2", "2"
## $ Detalle.1.PrcItem.0.0               <chr> "5000", "5000"
## $ Detalle.1.QtyItem.0.0               <chr> "1", "1"
## $ Detalle.2.CdgItem.TpoCodigo.0.0     <chr> "INT1", "INT1"
## $ Detalle.2.CdgItem.VlrCodigo.0.0     <chr> "1515", "1515"
## $ Detalle.2.DscItem                   <int> NA, NA
## $ Detalle.2.MontoItem.0.0             <chr> "5000", "5000"
## $ Detalle.2.NmbItem.0.0               <chr> "Caja de Diskettes 10 Unid...
## $ Detalle.2.NroLinDet.0.0             <chr> "3", "3"
## $ Detalle.2.PrcItem.0.0               <chr> "1000", "1000"
## $ Detalle.2.QtyItem.0.0               <chr> "5", "5"
## $ Detalle.CdgItem.TpoCodigo.0.0       <chr> "INT1", "INT1"
## $ Detalle.CdgItem.VlrCodigo.0.0       <chr> "011", "011"
## $ Detalle.DscItem                     <int> NA, NA
## $ Detalle.MontoItem.0.0               <chr> "90000", "90000"
## $ Detalle.NmbItem.0.0                 <chr> "Parlantes Multimedia 180W...
## $ Detalle.NroLinDet.0.0               <chr> "1", "1"
## $ Detalle.PrcItem.0.0                 <chr> "4500", "4500"
## $ Detalle.QtyItem.0.0                 <chr> "20", "20"
## $ Encabezado.Emisor.Acteco.0.0        <chr> "1", "1"
## $ Encabezado.Emisor.CdgSIISucur.0.0   <chr> "59529595", "59529595"
## $ Encabezado.Emisor.CiudadOrigen.0.0  <chr> "Santiago", "Santiago"
## $ Encabezado.Emisor.CmnaOrigen.0.0    <chr> "Santiago", "Santiago"
## $ Encabezado.Emisor.DirOrigen.0.0     <chr> "Teatinos 120", "Teatinos ...
## $ Encabezado.Emisor.GiroEmis.0.0      <chr> "Informatica", "Informatica"
## $ Encabezado.Emisor.RUTEmisor.0.0     <chr> "88888888-8", "88888888-8"
## $ Encabezado.Emisor.RznSoc.0.0        <chr> "EMPRESA DE PRUEBA", "EMPR...
## $ Encabezado.IdDoc.FchEmis.0.0        <chr> "2016-10-04", "2013-06-21"
## $ Encabezado.IdDoc.Folio.0.0          <chr> "52725", "52726"
## $ Encabezado.IdDoc.TipoDTE.0.0        <chr> "33", "33"
## $ Encabezado.Receptor.CiudadRecep.0.0 <chr> "Santiago", "Santiago"
## $ Encabezado.Receptor.CmnaRecep.0.0   <chr> "Santiago", "Santiago"
## $ Encabezado.Receptor.DirRecep.0.0    <chr> "Santiago", "Santiago"
## $ Encabezado.Receptor.GiroRecep.0.0   <chr> "Comercial", "Comercial"
## $ Encabezado.Receptor.RUTRecep.0.0    <chr> "76576212-K", "69507000-4"
## $ Encabezado.Receptor.RznSocRecep.0.0 <chr> "E-SERVICE SPA", "RUT DE P...
## $ Encabezado.Totales.IVA.0.0          <chr> "3672", "5002"
## $ Encabezado.Totales.MntNeto.0.0      <chr> "19327", "26327"
## $ Encabezado.Totales.MntTotal.0.0     <chr> "22999", "31329"
## $ Encabezado.Totales.TasaIVA.0.0      <chr> "19", "19"
## $ TED.DD.CAF.DA.FA.0.0                <chr> "2004-03-30", "2004-03-30"
## $ TED.DD.CAF.DA.IDK.0.0               <chr> "1", "1"
## $ TED.DD.CAF.DA.RE.0.0                <chr> "88888888-8", "88888888-8"
## $ TED.DD.CAF.DA.RNG.D.0.0             <chr> "17479", "17479"
## $ TED.DD.CAF.DA.RNG.H.0.0             <chr> "17901", "17901"
## $ TED.DD.CAF.DA.RS.0.0                <chr> "EMPRESA DE PRUEBA", "EMPR...
## $ TED.DD.CAF.DA.RSAPK.E.0.0           <chr> "Aw==", "Aw=="
## $ TED.DD.CAF.DA.RSAPK.M.0.0           <chr> "umn8PR3gbC1L3CFheZb5Woh2b...
## $ TED.DD.CAF.DA.TD.0.0                <chr> "33", "33"
## $ TED.DD.CAF.FRMA.0.0                 <chr> "FVGanT5jYLSopnBQt7+t48aoL...
## $ TED.DD.F.0.0                        <chr> "52725", "52726"
## $ TED.DD.FE.0.0                       <chr> "2016-10-04", "2013-06-21"
## $ TED.DD.IT1.0.0                      <chr> "SET INTERCAMBIO NUMERO 70...
## $ TED.DD.MNT.0.0                      <chr> "22999", "31329"
## $ TED.DD.RE.0.0                       <chr> "88888888-8", "88888888-8"
## $ TED.DD.RR.0.0                       <chr> "76576212-K", "69507000-4"
## $ TED.DD.RSR.0.0                      <chr> "E-SERVICE SPA", "RUT DE P...
## $ TED.DD.TD.0.0                       <chr> "33", "33"
## $ TED.DD.TSTED.0.0                    <chr> "2016-10-04T14:01:13", "20...
## $ TED.FRMT.0.0                        <chr> "V+YvYUaHFLHuOVg/n5aRxNSgc...
## $ TmstFirma.0.0                       <chr> "2016-10-04T14:01:13", "20...


signatures <- xml_find_all(doc, ".//a2:DTE/a3:Signature", ns)
map_df(signatures, function(x) {
  as_list(x) %>% toJSON() %>% ndjson::flatten()
}) %>% glimpse()
## Observations: 2
## Variables: 9
## $ KeyInfo.KeyValue.RSAKeyValue.Exponent.0.0 <chr> "AQAB", "AQAB"
## $ KeyInfo.KeyValue.RSAKeyValue.Modulus.0.0  <chr> "\nmuHYq0PQCNG/sSdh+...
## $ KeyInfo.X509Data.X509Certificate.0.0      <chr> "\nMIIEgzCCA2ugAwIBA...
## $ SignatureValue.0.0                        <chr> "\nbnp4e4f6iFP2SG6bp...
## $ SignedInfo.CanonicalizationMethod         <int> NA, NA
## $ SignedInfo.Reference.DigestMethod         <int> NA, NA
## $ SignedInfo.Reference.DigestValue.0.0      <chr> "LwtihgKaAyu3Szq+NW/...
## $ SignedInfo.Reference.Transforms.Transform <int> NA, NA
## $ SignedInfo.SignatureMethod                <int> NA, NA

还有其他方法可以将疯狂列表展平为数据框(很多都是在SO上)。