解析r中的FIXML



我一直在搜索和搜索一种在r中解析FIXML的方法。似乎所有结果都仅用于XML格式,而不是FIXML,其中数据包含在标记中。下面是一个示例文件,我想解析,似乎XML, XML2库不是为这种格式构建的。

<FIXML v="FIX50SP2" s="20080115">
<SecDef RptID="3400001" ReqID="1234567" RspTyp="100">
<Hdr SID="CME" TID="BRKR" SSub="CPAPI " TSub="user" />
<Instrmt ID="CS" Src="H" ProdCmplx="ENRGY" SecTyp="FUT" MinPxIncr="0.01"
UOM="Bbl" UOMQty="1000" PxUOM="Bbl" PxUOMQty="1" SettlMeth="C"
PxQteMeth="STD" ListMeth="0" TmUnit="Mo" Exch="NYMEX" Desc="
WTI Calendar Swap" />
<InstrmtExt>
<Attrb Typ="29" Val="Y" />
<Attrb Typ="25" Val="1" />
<Attrb Typ="24" Val="2" />
<Attrb Typ="24" Val="12" />
</InstrmtExt>
</SecDef>
</FIXML>

就像我之前说的,我已经尝试了许多来自XML和XML2库以及tidy的解决方案。似乎没有什么能正确地从FIX格式中提取数据。

从上面的例子中,我希望结果是像这样的df:

<表类>RptIDReqIDRspTypSIDTIDSSubTSubInstrmt IDtbody><<tr>34000011234567100CME电流断路器CPAPIc

<xml2"库可以很容易地解析出属性和值。只需要几个额外的步骤将从列表中数据帧的属性。>

library(xml2)
library(dplyr)

page <- read_xml('<FIXML v="FIX50SP2" s="20080115">
<SecDef RptID="3400001" ReqID="1234567" RspTyp="100">
<Hdr SID="CME" TID="BRKR" SSub="CPAPI " TSub="user" />
<Instrmt ID="CS" Src="H" ProdCmplx="ENRGY" SecTyp="FUT" MinPxIncr="0.01"
UOM="Bbl" UOMQty="1000" PxUOM="Bbl" PxUOMQty="1" SettlMeth="C"
PxQteMeth="STD" ListMeth="0" TmUnit="Mo" Exch="NYMEX" Desc="WTI Calendar Swap"/>
<InstrmtExt>
<Attrb Typ="29" Val="Y" />
<Attrb Typ="25" Val="1" />
<Attrb Typ="24" Val="2" />
<Attrb Typ="24" Val="12" />
</InstrmtExt>
</SecDef>
</FIXML>')

SecDef <- page %>% xml_find_all(".//SecDef") %>% xml_attrs() %>% bind_rows()
Hdr <- page %>% xml_find_all(".//Hdr") %>% xml_attrs() %>% bind_rows()
Instrmt <- page %>% xml_find_all(".//Instrmt") %>% xml_attrs() %>% bind_rows()
Attrb <- page %>% xml_find_all(".//Attrb") %>% xml_attrs() %>% bind_rows()