1

XML / HTMLファイル(temp.xml)とXSLT(temp.xsl)を入力として使用してXMLファイルを生成しており、出力は新しい名前(temp_copy.xml)の別のファイルとして生成されていますが、新しいファイルを作成する代わりに、XMLファイルを入力します。入力ファイルと同じパスを指定してみましたが、うまくいきませんでした。では、これを達成するための他の方法は何でしょうか?前もって感謝します。

私のJavaコード:

public class SimpleXSLT {
    public static void main(String[] args) {

        String inXML = "C:/tmp/temp.xml";
        String inXSL = "C:/tmp/temp.xsl";
        String outTXT = "C:/tmp/temp_copy.xml";
        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);
    }
}
4

2 に答える 2

2

「しかし、それはうまくいきませんでした」をより適切に定義する必要があります。エラーが発生しましたか?もしそうなら、それは何と言いましたか?そうでない場合、あなたの期待に反して何が起こったのですか?

通常、入力を上書きするプロセスは、そのケースを処理できるように特別に設計されていない限り、入力の読み取りが完了する前に入力を壊してしまう危険性があります。

最も簡単な解決策は、別の出力ファイルに書き込み、変換が終了したら、入力ファイルを削除または移動/名前変更し、出力ファイルを以前の入力ファイルに移動/名前変更することです。

于 2012-08-03T21:33:05.970 に答える
1

他の誰かが同じ問題に直面している場合は、LarsH の提案に従って私が行ったことを見てください。完全に機能します-

public static void main(String[] args) {
    String inXML = "C:/tmp/text.xml";
    String inXSL = "C:/tmp/text.xsl";
    String outTXT = "C:/tmp/text_copy_copy.xml";
    String renamedFile = "C:/tmp/text.xml";
    File oldfile =new File(outTXT);
    File newfile =new File(renamedFile);
    SimpleXSLT st = new SimpleXSLT();
    try {
    //TRANSFORMATION CODE
    }

    try{     
        File file = new File(inXML);
        if(file.delete()){
            System.out.println("Deleted!");
        }else{
            System.out.println("Failed.");
        }

    }catch(Exception e){

        e.printStackTrace();

    }

    if(oldfile.renameTo(newfile)){
        System.out.println("Renamed");
    }else{
        System.out.println("Rename failed");
    }

    }
于 2012-08-04T05:39:44.313 に答える