分享
 
 
 

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;

等于= =

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有