zoukankan      html  css  js  c++  java
  • 在java代码中用xslt处理xml文件

    java处理xml文件

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.UnsupportedEncodingException;
    import java.net.URL;
    import java.net.URLDecoder;
    
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerException;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.stream.StreamSource;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.io.DocumentResult;
    import org.dom4j.io.DocumentSource;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    
    public class Jom4jForXmltoXslt {
        
        /**
         * 利用xslt文件转换xml
         * @author Administrator
         * @parame document,styleSheet
         */
        public static Document transformDocument(Document document,File styleSheet)
        throws TransformerException {
            TransformerFactory factory = TransformerFactory.newInstance();
            Transformer transformer = factory.newTransformer(new StreamSource(styleSheet));
    
            DocumentSource source = new DocumentSource(document);
            DocumentResult result = new DocumentResult();
            transformer.transform(source, result);
    
            Document transformedDoc = result.getDocument();
    
            return transformedDoc;
        }
        
        /**
         * 读取需要转换的xml文件
         * @return Document
         * @throws UnsupportedEncodingException
         * @throws FileNotFoundException
         */
        public Document getRoleXML() throws UnsupportedEncodingException, FileNotFoundException {
            InputStream is=null;
            URL url=this.getClass().getClassLoader().getResource("resources.xml");
            if(url==null) return null;
            String path = url.getFile();
            path = URLDecoder.decode(path,"UTF-8");
            is = new FileInputStream(new File(path));
            System.out.println("读到的menuConfig.xml位置在:"+path);
            SAXReader reader = new SAXReader();
    
            try {
                return reader.read(is);
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return null;
            }
        }
        
        public static void main(String args[]) throws IOException {
            try {
                
                Document doc = new Jom4jForXmltoXslt().getRoleXML();
                Document resultDoc = Jom4jForXmltoXslt.transformDocument(doc, new File("transfer-menu-before.xslt"));
    
                OutputFormat format = OutputFormat.createPrettyPrint();
                format.setEncoding("GBK");
    
                XMLWriter writer = new XMLWriter(new FileWriter(new File("output.xml")),format);
                writer.write(resultDoc);
                writer.close();
                System.out.println("用xslt转换xml文件成功!");
    
    
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (TransformerException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
    }
  • 相关阅读:
    C语言 realloc为什么要有返回值,realloc返回值具体解释/(解决随意长度字符串输入问题)。
    opencv中的vs框架中的Blob Tracking Tests的中文注释。
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 分苹果
    Java实现 蓝桥杯VIP 算法提高 分苹果
    Java实现 蓝桥杯VIP 算法提高 分苹果
    Java实现 蓝桥杯VIP 算法提高 分苹果
  • 原文地址:https://www.cnblogs.com/rinack/p/9049442.html
Copyright © 2011-2022 走看看