Java中利用xslt将一种格式的XML转化为成另外一种XML

JAVA 专栏收录该内容
20 篇文章 0 订阅

采用xslt将一种格式的XML转化另外一种格式的XML

1.Java代码 

package Util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

public class TransformXml {
	
	
	public static void main(String [] args) {
		String srcXmlPath = "E:\\test\\test取消.xml";
		String targetXmlPath = "E:\\test\\target.xml";
		String xsltPath = "E:\\test\\TEST.xslt";
		transformXmlByXslt(srcXmlPath, targetXmlPath, xsltPath);
		
		
		try {    
			FileInputStream fis = new FileInputStream(targetXmlPath);
			InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
			BufferedReader br = new BufferedReader(isr);
			String message="";
			while((message=br.readLine())!=null) {
				System.out.println(message);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			System.out.println("没有找到该文件");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
			System.out.println("格式编码错误");
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
		
		
	}
	
	
	/**
	 * 使用xslt转化XML文件
	 * @param srcXmlPath 源XML文件路径
	 * @param targetXmlPath 目标XML文件路径
	 * @param xsltPath XSLT文件路径
	 */
	public static void transformXmlByXslt(String srcXmlPath,String targetXmlPath,String xsltPath) {
		
		//获取转化器工厂
		TransformerFactory tff = TransformerFactory.newInstance();
		
		try {
			//获取转化器对象实例s
			Transformer tf = tff.newTransformer(new StreamSource(xsltPath));
			//进行转化
			tf.transform(new StreamSource(srcXmlPath), new StreamResult(
					new FileOutputStream(targetXmlPath)));
			
			System.out.println("转化成功");
		} catch (TransformerConfigurationException e) {
			e.printStackTrace();
			System.out.println("获取转化对象实例失败");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			System.out.println("没有发现源文件");
		} catch (TransformerException e) {
			e.printStackTrace();
			System.out.println("转化成目标文件失败");
		}
		
		
	}
	

}

 

2.XSLT文件

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template match="/">
		<xsl:for-each select="CancelApplication">
			<xsl:variable name="item" select="/CancelApplication/item"/>
			<test>
			<name>
				<xsl:value-of select="YID"/>
			</name>
			<other>
				<xsl:value-of select="HZID"/>
			</other>
			<data item="{$item}"/>
			
		</test>
		</xsl:for-each>
	</xsl:template>
</xsl:stylesheet>

3.源文件

<?xml version="1.0" encoding="UTF-8"?>
<CancelApplication>
	<YID>123</YID>
	<HZID>2018-07-31 11:25:22</HZID>
	<item>joker</item>
</CancelApplication>

程序执行成功后 生成目标文件

<?xml version="1.0" encoding="UTF-8"?><test><name>123</name><other>2018-07-31 11:25:22</other><data item="joker"/></test>

 参考:

https://blog.csdn.net/u010523770/article/details/72831746

 

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

世界joker

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值