首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中转换html文件

在java中转换html文件
EN

Stack Overflow用户
提问于 2012-11-23 19:30:15
回答 3查看 195关注 0票数 1
代码语言:javascript
复制
public String transform_XML(String type, InputStream file){
        TransformerFactory tf = TransformerFactory.newInstance();
        String xslfile = "/StyleSheets/" + type + ".xsl";
        Transformer t = tf.newTemplates(new StreamSource(this.getClass().getResourceAsStream(xslfile))).newTransformer();
        Source source = new StreamSource(file);
        CharArrayWriter wr = new CharArrayWriter();
        StreamResult result = new StreamResult(wr);
        t.transform(source, result);
     return wr.toString();
}

上面的方法接受一个xsl和xml文件作为输入,并以字符串形式返回转换后的结果。javax.xml.transform包中的类就是用来完成这个任务的。

现在我可以使用相同的包来转换html文件了吗?(由于包名包含xml,我对此表示严重怀疑。)要转换html文件,我应该怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-23 19:53:00

正如您所理解的,html文档不一定是有效的xml。但是您可以将html转换为xml,然后使用有效的xml进行操作(转换后-您将得到DOM树)。

我建议您使用CyberNeko HTML Parserhtml转换为xml

草稿示例:

代码语言:javascript
复制
import org.cyberneko.html.parsers.DOMParser;
import org.w3c.dom.Document;
...
public Document parseHtml(InputStream is) throws Exception {
    DOMParser parser = new DOMParser();
    parser.parse(new InputSource(is));
    return parser.getDocument();
}

如果您使用maven -您只需从存储库CyberNeko添加到项目http://mvnrepository.com/artifact/nekohtml/nekohtml

票数 1
EN

Stack Overflow用户

发布于 2012-11-23 19:42:03

代码语言:javascript
复制
public class SimpleXSLT {
  public static void main(String[] args) {

    String inXML = "C:/tmp/temp.html";
    String inXSL = "C:/tmp/temp.xsl";
    String outTXT = "C:/tmp/temp_copy.html";
    SimpleXSLT st = new SimpleXSLT();
    try {
        st.transform(inXML,inXSL,outTXT);
        } catch(TransformerConfigurationException e) {
        System.err.println("Invalid factory configuration");
        System.err.println(e);
        } catch(TransformerException e) {
        System.err.println("Error during transformation");
        System.err.println(e);
    }
  }

  public void transform(String inXML,String inXSL,String outTXT)
     throws TransformerConfigurationException,
   TransformerException {
     TransformerFactory factory = TransformerFactory.newInstance();
     StreamSource xslStream = new StreamSource(inXSL);
     Transformer transformer = factory.newTransformer(xslStream);
     transformer.setErrorListener(new MyErrorListener());
     StreamSource in = new StreamSource(inXML);
     StreamResult out = new StreamResult(outTXT);
     transformer.transform(in,out);
     System.out.println("The generated XML file is:" + outTXT);
  }
}
票数 1
EN

Stack Overflow用户

发布于 2012-11-23 21:43:53

据我所知,你的评论主要是为了抓取和取回信息

您可以看看JSoup,它可以非常方便地解析和抓取HTML中的DOM

否则,如果您想保留xslt,那么stemm解决方案应该没问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13528192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档