XML+XSLT处理XML的偏方 xslt xml html

通过XSLT可以对XML进行处理,指定输出方式XML,HTML,TEXT等,这样可以方便的通过xslt对原始xml进行处理得到需要的xml或其他方式可以通过2种方式1种:通过客户端js进行处理优点:实现简单,速度快 缺点:js兼容性问题突出;遇到大记录的xml会有资源消耗比较大,慎用。2种:通过服务端DOM4j,JDom等输出处理xml片断。交给前台响应优点:前台处理简单,兼容性问题解决;缺点:处理复杂[客户端处理]//xmlfile.xml<?xml version="1.0"?>
<!--
XML+XSLT处理XML的偏方 xslt xml html
<?xml-stylesheet type="text/xsl" href="people.xsl"?>
--><people> <person born="1900"died="1099">
<name>
<first_name>Wu</first_name>
<last_name>feng</last_name>
</name>
<profession>computer scientist</profession>
<profession>mathematician</profession>
<profession>cryptographer</profession>
</person> <person born="1918" died="288">
<name>
<first_name>王</first_name>
<middle_initial>二</middle_initial>
<last_name>小</last_name>
</name>
<profession>生态学</profession>
<hobby>放羊</hobby>
</person>

<person>
<hobby>摄影</hobby>
<hobby>旅游</hobby>
</person></people>
//xslfile.xsl<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:outputmethod="xml" omit-xml-declaration="yes"indent="yes"/>
<!--
循环
[结果]
person  1900
person  1918
person 
hobby  放羊
hobby  摄影
hobby  旅游
-->
<xsl:template match="/">
<xsl:for-each select="//person">
<xsl:value-of select="name()"/> 
<xsl:value-of select="@born"/>
<br />
</xsl:for-each><xsl:for-each select="people/person/hobby">
<xsl:value-of select="name()"/> 
<xsl:value-of select="."/>
<br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>//jsclient.htm<html><body><script language="javascript">// Load XMLvar xml = new ActiveXObject("Microsoft.XMLDOM")xml.async = falsexml.load("xmlfile.xml")// Load the XSLvar xsl = new ActiveXObject("Microsoft.XMLDOM")xsl.async = falsexsl.load("xslfile.xsl")
// Transformdocument.write(xml.transformNode(xsl))
</script>
</body></html>[服务端处理]//JavaServer.javapackage wf;import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.StringWriter;
import java.util.Enumeration;
import java.util.Properties;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;import org.dom4j.DocumentException;
public class JavaServer
{
/**
* 方法一
*这个方法将xml通过样式单转换.
*@paramxmlfile将要被转换的xml文件路径
*@paramxslfileXSL文件的文件路径
* @returnString转换后的字符串形式存放的xml/html/text
*/
publicstaticStringExecuteXSL(Stringxmlfile,Stringxslfile){
try{
ByteArrayOutputStreambyteRep=newByteArrayOutputStream();
TransformerFactorytransformerFactory =TransformerFactory.newInstance();
StreamSourcesource =newStreamSource(xmlfile);
StreamResultresult =newStreamResult(byteRep);
StreamSourcestyle=newStreamSource(xslfile);
Transformertransformer=transformerFactory.newTransformer(style);
transformer.setOutputProperty("method","xml");
transformer.setOutputPrope rty(javax.xml.transform.OutputKeys.ENCODING,
"GB2312");
transformer.transform(source,result);
returnbyteRep.toString();
}
catch(Exceptione){
e.printStackTrace();
returnnull;
}

} /*
* 方法二
* */
public static String transXML2HTML(Stringxmlfile, String xslfile,
StringsOutMethod, Properties params) {
StringWriter sw = newStringWriter();
StreamResult sr = newStreamResult(sw);try {
FileInputStreamfis = new FileInputStream(xmlfile);
File fxml =new File(xmlfile);
StreamSourcesXML = new StreamSource(fxml);
File fxsl =new File(xslfile);
StreamSourcesSTL = new StreamSource(fxsl);TransformerFactorytFactory = TransformerFactory.newInstance();
Transformertransformer = tFactory.newTransformer(sSTL);if(sOutMethod != null)
transformer.setOutputProperty("method",sOutMethod);if(params != null) {
Enumeration<Object>keys = params.keys();
String_key = "";
while(keys.hasMoreElements()) {
_key= (String) keys.nextElement();
transformer.setParameter(_key,params.getProperty(_key));
}
}
transformer.transform(sXML,sr);
} catch (Exception ex) {
ex.printStackTrace();
}
returnsw.getBuffer().toString();
}
publicstatic void main(String[] args) throws DocumentException
{
Stringxmlpath="D:\Java_test\xmlfile.xml";
Stringxslpath="D:\Java_test\xslfile.xsl";
System.out.print(JavaServer.ExecuteXSL(xmlpath,xslpath));
//System.out.print(JavaServer.transXML2HTML(xmlpath,xslpath,null,null ));
/*客户端通过js loadxml载入结果*/
}
}

  

爱华网本文地址 » http://www.aihuau.com/a/25101016/316503.html

更多阅读

牙疼快速止疼偏方 治牙疼的偏方最快方法

牙疼快速止疼偏方——简介牙疼是生活中非常常见的疾病之一,有内热,炎症,蛀牙等引起的,下面介绍一些治疗牙疼的偏方,希望对大家有所帮助。 牙疼快速止疼偏方——方法/步骤牙疼快速止疼偏方 1、槐实煎蛋 取槐实少许,鸡蛋一到两个,先把食用

治疗痤疮的偏方 如何治好痤疮

治疗痤疮的偏方。痤疮,青春期后体内激素水平改变,雄性激素水平增加,导致皮脂腺分泌旺盛,多种因素综合作用所致的毛囊皮脂腺产生慢性炎症,表现出来的症状就是痤疮。   随着生活节奏加快,学习工作的压力加大,痤疮患者有很多,由于对痤疮治疗

中医治疗脑血栓偏方 治疗脑血栓的偏方

中医治疗脑血栓偏方——简介治疗脑血栓有很多种方法,然而中医疗法更加温和,对身体的伤害比较小,适合长期调理。但由于中医见效慢等局限,在进行中医治疗时可配合天然生物调理疗法的微络康多肽地龙蛋白,加速病症的调理效果又不对身体产生毒

偏方治皮肤过敏皮肤过敏偏方 皮肤过敏的偏方

治疗皮肤过敏的偏方有哪些?生活中,有好人属于过敏体质,很容易受到外界的刺激而引发过敏反应,由于它的反复发作,让很多患者放弃治疗。那么,治疗皮肤过敏的偏方有哪些?偏方治皮肤过敏皮肤过敏偏方——步骤/方法偏方治皮肤过敏皮肤过敏偏方 1

治疗白发的偏方 治疗白发变黑的小偏方

其实有白发并不是那么可怕,有很多治白发的方法,只要坚持使用你认定的方法,就会有效果的。有白发主要是由于黑色素细胞失活,所以要想没有白发,最重要的就是激活黑色素细胞。治疗白发的偏方——原料桑白皮、五倍子、青葙子地骨皮、生地黄、

声明:《XML+XSLT处理XML的偏方 xslt xml html》为网友跟自己厮守分享!如侵犯到您的合法权益请联系我们删除