在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(); 
        } 
    } 
     
}

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/16500.html

(0)
上一篇 2021年7月19日 19:22
下一篇 2021年7月19日 19:22

相关推荐

发表回复

登录后才能评论