1
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ファイルを入力として受け取り、変換された結果をStringとして返します。これを実現するために、パッケージjavax.xml.transformのクラスが使用されています。

同じパッケージを使用してhtmlファイルを変換できますか?(パッケージ名にはxmlが含まれているので、私はそれを真剣に疑っています。)htmlファイルを変換するにはどうすればよいですか?

4

3 に答える 3

1
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);
  }
}
于 2012-11-23T11:42:02.667 に答える
1

ご存知のように、htmlドキュメントは必ずしも有効なxmlである必要はありません。ただし、htmlをxmlに変換し、その後、有効なxmlで操作することができます(変換後、DOMツリーを取得します)。

Cyber​​NekoHTMLパーサーを使用してに変換htmlすることをお勧めしますxml

ドラフトの例:

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

使用する場合-リポジトリhttp://mvnrepository.com/artifact/nekohtml/nekohtmlmavenからプロジェクトに追加するだけです。CyberNeko

于 2012-11-23T11:52:59.663 に答える
1

私はあなたのコメントを理解しているので、それは主に情報を取り戻すためのスクレイピングのためです

JSoupを見ることができます。これは、HTMLからDOMを解析およびスクレイプするのに非常に便利です。

それ以外の場合、xsltsを保持したい場合は、stemmソリューションで問題ありません。

于 2012-11-23T13:43:52.990 に答える