我有一个与此类似的xml (请看末尾)
<?xml version="1.0" encoding="utf-8"?>
<estadodecuenta FUECD="20190904G066001" clv_participante="G066" clv_subcuenta="G066001" fecha_oper="2019/08/28" fecha_emis="2019/09/04" clv_sistema="SIN">
<liquidaciones>
<liquidacion num_liq="0">
<facturas>
<factura tipo="pago" emisor="participante" rfc="ERI160205510" razon_social="ESJ RENOVABLE I, S. DE R.L. DE C.V." domicilio="CAMPOS ELISEOS 345-P 4 CÓDIGO POSTAL. 11560 MX MIGUEL HIDALGO" fuf="20190904G066001P00" fecha_pago="2019/09/18">
<conceptos>
<concepto ful="20190904G066001-A01010" grupo="Pagos de Energía">
<descripcion>Venta de energía generada en el MDA</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A01040" grupo="Pagos de Energía">
<descripcion>Venta de energía importada en el MDA</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A03010" grupo="Pagos de Servicios de Reserva">
<descripcion>Reserva para regulación secundaria en el MDA</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A04010" grupo="Pagos de Servicios de Reserva">
<descripcion>Reserva rodante de diez minutos en el MDA</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A05010" grupo="Pagos de Servicios de Reserva">
<descripcion>Reserva no rodante de diez minutos en el MDA</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A06010" grupo="Pagos de Servicios de Reserva">
<descripcion>Reserva rodante suplementaria en el MDA</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A07010" grupo="Pagos de Servicios de Reserva">
<descripcion>Reserva no rodante suplementaria en el MDA</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A10010" grupo="Pagos de Garantía de Suficiencia de Ingresos">
<descripcion>Garantía de suficiencia de ingresos en el MDA a generadores</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A12020" grupo="Transferencia/Devolución del Sobrecobro por el Efecto de las Pérdidas Marginales">
<descripcion>Devolución del sobrecobro por pérdidas marginales en el MDA a cargas directamente modeladas</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A12030" grupo="Transferencia/Devolución del Sobrecobro por el Efecto de las Pérdidas Marginales">
<descripcion>Devolución del sobrecobro por pérdidas marginales en el MDA a cargas indirectamente modeladas</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A12050" grupo="Transferencia/Devolución del Sobrecobro por el Efecto de las Pérdidas Marginales">
<descripcion>Devolución del sobrecobro por pérdidas marginales en el MDA a los exportadores</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A12180" grupo="Transferencia/Devolución del Sobrecobro por el Efecto de las Pérdidas Marginales">
<descripcion>Devolución del sobrecobro por pérdidas marginales en el MDA</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A13070" grupo="Derechos Financieros de Transmisión">
<descripcion>Derechos financieros de transmisión</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A14180" grupo="Derechos Financieros de Transmisión">
<descripcion>Reparto de la liquidación de DFT legados cancelados o rechazados</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A15020" grupo="Derechos Financieros de Transmisión">
<descripcion>Excedente de la liquidación de los DFT en el MDA a cargas directamente modeladas</descripcion>
<monto_total>100.41</monto_total>
<iva>16.07</iva>
<total_neto>116.48</total_neto>
<anexos>
<anexo elemento="AXG0663TZL79">
<registrosdiarios>
<registro POTENCIA="2.88" PRECIO="34.8628630749444026" MONTO_DIARIO="100.41" />
</registrosdiarios>
</anexo>
</anexos>
</concepto>
<concepto ful="20190904G066001-A15030" grupo="Derechos Financieros de Transmisión">
<descripcion>Excedente de la liquidación de los DFT en el MDA a cargas indirectamente modeladas</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A15050" grupo="Derechos Financieros de Transmisión">
<descripcion>Excedente de la liquidación de los DFT en el MDA a exportadores</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A17080" grupo="Pago en Subastas de Derechos Financieros de Transmisión">
<descripcion>Compra (a precio negativo) en subastas de los DFT</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A18180" grupo="Pago en Subastas de Derechos Financieros de Transmisión">
<descripcion>Reparto de ingresos en subastas de DFT</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A19110" grupo="Pagos de Transacciones Bilaterales Financieras">
<descripcion>Transacciones bilaterales financieras en el MDA al receptor</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-A67290" grupo="Pago en Subastas de Derechos Financieros de Transmisión">
<descripcion>Pago diario al Fondo de Balance de Pagos de Subasta de DFT</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-B01010" grupo="Pagos de Energía">
<descripcion>Venta de energía generada en el MTR</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-B01040" grupo="Pagos de Energía">
<descripcion>Venta de energía importada en el MTR</descripcion>
<monto_total>0.00</monto_total>
<iva>0.00</iva>
<total_neto>0.00</total_neto>
<anexos />
</concepto>
<concepto ful="20190904G066001-B02020" grupo="Cargos de Energía">
<descripcion>Compra de energía en el MTR de cargas directamente modeladas</descripcion>
<monto_total>3934.60</monto_total>
<iva>629.54</iva>
<total_neto>4564.14</total_neto>
<anexos>
<anexo elemento="AXG0663TZL79">
<nodo>03SAN-115</nodo>
<registroshorarios>
<registro HORA="1" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0" PRECIO="1401.46" MONTO_HORARIO="0" />
<registro HORA="2" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0" PRECIO="1318.33" MONTO_HORARIO="0" />
<registro HORA="3" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0" PRECIO="1193.48" MONTO_HORARIO="0" />
<registro HORA="4" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0" PRECIO="1106.02" MONTO_HORARIO="0" />
<registro HORA="5" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0" PRECIO="960.24" MONTO_HORARIO="0" />
<registro HORA="6" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0" PRECIO="1059.13" MONTO_HORARIO="0" />
<registro HORA="7" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0" PRECIO="1147.91" MONTO_HORARIO="0" />
<registro HORA="8" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0" PRECIO="1244.73" MONTO_HORARIO="0" />
<registro HORA="9" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1355.08" MONTO_HORARIO="-243.91" />
<registro HORA="10" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1444.18" MONTO_HORARIO="-259.95" />
<registro HORA="11" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1399.78" MONTO_HORARIO="-251.96" />
<registro HORA="12" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1330.53" MONTO_HORARIO="-239.5" />
<registro HORA="13" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1327.75" MONTO_HORARIO="-239" />
<registro HORA="14" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1349.27" MONTO_HORARIO="-242.87" />
<registro HORA="15" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1380.5" MONTO_HORARIO="-248.49" />
<registro HORA="16" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1399.71" MONTO_HORARIO="-251.95" />
<registro HORA="17" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1396.47" MONTO_HORARIO="-251.36" />
<registro HORA="18" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1423.06" MONTO_HORARIO="-256.15" />
<registro HORA="19" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1445.31" MONTO_HORARIO="-260.16" />
<registro HORA="20" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1381.8" MONTO_HORARIO="-248.72" />
<registro HORA="21" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1451.21" MONTO_HORARIO="-261.22" />
<registro HORA="22" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1333.26" MONTO_HORARIO="-239.99" />
<registro HORA="23" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1286.89" MONTO_HORARIO="-231.64" />
<registro HORA="24" FDP="0" POTENCIA_MTR="0" POTENCIA_MDA="0.18" PRECIO="1154.04" MONTO_HORARIO="-207.73" />
</registroshorarios>
</anexo>
</anexos>
</concepto>我只想提取等于"Compra de energía en el MTR de cargas directamente modeladas“的”data.frame“以及它的子节点上包含的值”.//anexos/anexo/nodo/registro“。换句话说,用"registro”值创建一个注册表。
到目前为止,我已经成功地创建了一个带有“概念”值的注册表,但是我不能到达“data.frame”节点。
library(XML)
library(xml2)
library(tidyr)
xml.read <- read_xml(myxml)
xml.read <- xml_ns_strip(xml.read)
#create data frame
a <- xml.read %>% xml_find_all(".//factura") %>%
map_df(~{
xml_find_all(.x, ".//conceptos/concepto") %>% # get all the sub-records
map_df(~{
ch <- xml_children(.x) # get all the kids
as.list(set_names( # mash them together
xml_text(ch),
xml_name(ch)
))
})
}) %>%
readr::type_convert() # get better column types
data.frame(a)发布于 2019-10-30 11:23:33
xml2包是矢量化的,因此实际上不需要使用循环或映射函数。
在本例中,我假设您只有一个grupo=="Cargos de Energía“节点,如果您确实有多个节点,则必须遍历"CargoEnergy”变量中的每个节点,并分别处理它们。
library(xml2)
#read file
xml.read <-read_xml("stack.xml")
xml.read <- xml_ns_strip(xml.read)
#find all concepto nodes
nodes<-xml_find_all(xml.read, ".//conceptos/concepto")
#filter for the nodes for grupo=="Cargos de Energía"
CargoEnergy<- nodes[ xml_attr(nodes, "grupo")=="Cargos de Energía"]
#find the registro nodes under each CargoEnergy Node
#will need a loop/apply if more than 1 node is expected
registro<-xml_find_all(CargoEnergy, ".//registro")
#extract all attributes and combine into data frame
#assumes each node has the same attributes in the same order
answer<-data.frame(do.call(rbind, xml_attrs(registro)))这可能不是一个完整的答案,但应该会把你带到正确的方向。祝好运。
https://stackoverflow.com/questions/58616179
复制相似问题