TransformerFactory factory = TransformerFactory.newInstance();
      Source source = new StreamSource("Transform.xsl");
      Templates stylesheet = xformFactory.newTemplates(source);      Source source  = new StreamSource("Transformed.xml");
      Result result   = new StreamResult("Result.xml");      Transformer transformer = stylesheet.newTransformer();
      transformer.transform(source, result);

解决方案 »

  1.   

    这是我实际应用中的例子
    import javax.xml.parsers.*;
    import org.w3c.dom.*;
    import javax.xml.transform.*;
    import javax.xml.transform.dom.*;
    import javax.xml.transform.stream.*;
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    if ( xslFile != "") {
     try {
      StringReader sreader = new StringReader(tpString);
      DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
      DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
      Document doc = dBuilder.parse(new org.xml.sax.InputSource(sreader));
      TransformerFactory tsFactory = TransformerFactory.newInstance();
      Transformer trans = tsFactory.newTransformer(new   javax.xml.transform.stream.StreamSource(strBasePath+xslFile));
      StringWriter sWriter = new StringWriter();//这个可以换成文件输出流
      trans.transform(new DOMSource(doc),new StreamResult(sWriter));
      rtBytes = sWriter.toString().getBytes();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
      

  2.   

    可以使用jaxb,非常简单,编程量很小。
      

  3.   

    试验失败!我将lemondancing(小小猫) 大侠的程序改成如下内容:
    public Result transForm(String xmlFile,String xslFile)
    {
    Result result=null;
    try{
    TransformerFactory factory = TransformerFactory.newInstance();
    Source srcXSL = new StreamSource(xslFile);
    Templates stylesheet = factory.newTemplates(srcXSL);
    Source srcXML  = new StreamSource(xmlFile);
    result   = new StreamResult("Result.xml");
    Transformer transformer = stylesheet.newTransformer();
    transformer.transform(srcXML, result);
    System.out.println(result.toString());
    }
    catch(Exception e)
    { e.printStackTrace();
    }
    return result;
    }
    出现如下错误:
    javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: 字符转换错误:" Malformed UTF-8 char  -- is an XML encoding declaration missing?"(行号可能太小)
    .....我的xml和xsl文件肯定是没有问题的,因为我用微软的和第三方工具试验过转换,一切正常,两文件内也没有任何汉字,只有英文和数字,肯定不是汉字问题。求救!!!!!
      

  4.   

    我将zlyperson(rookie)大侠的程序改成如下形式:public void transForm1(String xmlFile,String xslFile)
    {

    try {
    StringReader sreader = new StringReader(xmlFile);
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(new org.xml.sax.InputSource(sreader));
    TransformerFactory tsFactory = TransformerFactory.newInstance();
    //Transformer trans = tsFactory.newTransformer(new   javax.xml.transform.stream.StreamSource(strBasePath+xslFile));;
    Transformer trans = tsFactory.newTransformer(new   javax.xml.transform.stream.StreamSource(xslFile));;
    StringWriter sWriter = new StringWriter();//这个可以换成文件输出流
    trans.transform(new DOMSource(doc),new StreamResult(sWriter));

    //rtBytes = sWriter.toString().getBytes();
    System.out.println(sWriter);
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    结果发生如下错误:
    org.xml.sax.SAXParseException:缺少文件根组建。
    如果把
    Document doc = dBuilder.parse(new org.xml.sax.InputSource(sreader));
    一句改成
    Document doc = dBuilder.parse(new org.xml.sax.InputSource(xmlFile));
    问题和楼上的一摸一样。晕!!!!!!!!
      

  5.   

    请问morninglihm() ,jaxb是什么?有例子吗?