SPLUS XML操作

王朝other·作者佚名  2006-05-10
窄屏简体版  字體: |||超大  

SPLUS XML操作

在SPLUS中,用于处理XML的有2个库,Insightful公司的SPXML库和比尔实验室的XML库

SPXML库支持读写XML,并使用C代码写和分析XML标记,在SPLUS中,没有类似的XML对象,也不能处理XML,在这个库中,XML处理是用XSL完成的

XML库,它引入了一组SPLUS类,用XML对象呈现,如XMLNode和XMLComment,使用DOM以建立SPLUS对象,这些对象可以方便的在SPLUS中使用

具体使用哪个库,要看你的实际应用:

SPXML库是有效率的,它使用SAX分析器且大部分操作用C实现

SPXML库使用XSL来完成XML变换操作

XML库使用内建的SPLUS对象来完成XML的变换,SPLUS程序员可能更喜欢这种操作,胜于XSL

SPXML库使用

利用SPXML库,你可以使用createXMLFile把SPLUS对象当做XML文件保存起来,通过parseXMLFile读一个XML文件,利用XSLT或者XSL-FO来完成XML文件的变换

SPXML库函数提供了一些有用的工具函数,如下:

函数xml2html, xml2pdf, xml2ps, xml2rtf, xml2xml,其利用javaXMLTransform来完成XML到不同文件类型的转换

createXMLString函数返回一个XML串胜于写到一个文件中去

summaryReport函数实现了汇总报表

利用SPXML库读写XML

> library(SPXML) #加载SPXML库

> xmlFile <- "output.xml" #指定输出路径

> orig.list <- list(fuel.frame, c(1:50), hist) #加载数据集内容到LIST

> createXMLFile(orig.list, xmlFile) #通过LIST建立XML文件

> new.list <- parseXMLFile(xmlFile) #读XML文件到LIST

> all.equal(orig.list, new.list) #比较新旧2个LIST是否相等

利用XSL来实现XML变换

> library(SPXML)

> logRegPMMLFile <- paste(getenv("SHOME"), "/library/SPXML/examples/xml_generation/logRegPMML.xml", sep="") #指定XML文件

> logRegXSLFile <- paste(getenv("SHOME"),"/library/SPXML/examples/xml_generation/logReg_ColImp_Vec.xsl", sep="") #知道XSL文件

> splusVecXMLFile <- "Splus_ColImp_Vec.xml" #知道目标XML文件

> xml2xml(logRegPMMLFile, splusVecXMLFile, logRegXSLFile)

> colImpVec <- parseXMLFile(splusVecXMLFile) #读目标XML文件

> colImpVec

建立XML报表

> library(SPXML)

> xsltFile <- paste(getenv("SHOME"),"/library/SPXML/xml/SplusObjects.xsl", sep="")

> xmlFile <- "c:\\temp.xml"

> splusObject <- fuel.frame

> createXMLFile(splusObject, xmlFile)

> javaXMLTransform(xmlFile, "c:\\fuelReport.htm", xsltFile)

要建立PDF,RTF或者PS,需使用SplusObjects_FO.xsl

> foFile <- paste(getenv("SHOME"), "/library/SPXML/xml/SplusObjects_FO.xsl", sep="")

> javaXMLTransform(xmlFile, "c:\\fuelReport.pdf", foFile)

> javaXMLTransform(xmlFile, "c:\\fuelReport.rtf", foFile)

> javaXMLTransform(xmlFile, "c:\\fuelReport.ps", foFile)

汇总报告

使用summaryReport函数

> args(summaryReport)

如:

> reportFilename <- "fuel.report.html"

> summaryReport(fuel.frame, reportFilename)

也可以使用下面代码:

> summaryReport(data=fuel.frame, file="c:\\fuel.report.pdf", variables=c("Weight"), grouping.variables=c("Type"))

自定义报表输出

如果你想改变报表输出,比如改变颜色、字体等,你可以通过修改ColumnReport.xsl(用于HTML)或者ColumnReport_FO.xsl来实现,他们位于library/SPXML/xml目录下

改变颜色

<xsl:variable name="g_headerBG" select="'#CCE6FF'" />

<xsl:variable name="g_rowBG_1" select="'#EEEEEE'" />

<xsl:variable name="g_rowBG_2" select="'#FFFFFF'" />

对应在XSL中的特殊字符

小于< &lt;

大于> &gt;

等于= =

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航