1

私はxmlファイルを作成しています。このコードに問題はありません。

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
String fileName="D:\\Doc\\File.xml";
StreamResult result = new StreamResult(new File(fileName));
transformer.transform(source, result);

しかし、パスが

String fileName="D:\\My Doc\\File.xml";

その後、エラーをスローしています。

XML-22110: (Fatal Error) Invalid StreamResult set in TransformerHandler.

ファイルパスのスペースが問題を引き起こしていると思います。それを解決する方法は?

4

2 に答える 2

1

スペースは問題ないと思います。このコードを実行したところ、完全に機能しました。

package io;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;

/**
 * FileWithSpace description here
 * @author Michael
 * @link
 * @since 7/24/12 5:03 AM
 */
public class FileWithSpace {
    public static void main(String[] args) {
        try {
            File dir = new File("J:\\Path With Spaces");
            boolean exists = dir.mkdirs();
            if (exists) {
                File f = new File("J:\\Path With Spaces\\test.txt");
                FileOutputStream fos = new FileOutputStream(f);
                PrintStream ps = new PrintStream(fos);
                ps.println("This is a test");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ファイルを書き込む前にディレクトリを作成したことに注意してください。あなたC:\\My Docsが始める前に存在しますか?mkdirs()そうでない場合は、示されているようにそのステップを追加します。を作成する前にディレクトリを作成しないと、私の簡単な例は失敗しますFileOutputStream

于 2012-07-24T08:46:01.377 に答える
0

ファイルを FileOutputStream として扱う必要があります。そうしないと、ファイル名が URI として扱われます。

Transformer transformer = TransformerFactory.newInstance().newTransformer();
Result output = new StreamResult( new FileOutputStream( absolutePath ) );
Source input = new DOMSource( XMLDoc );
transformer.transform(input, output);

注意: 上記にも回答するには: 問題は XML トランスフォーマーに固有のものです。単に書き込み用のファイルを作成しただけでは発生しません。

于 2014-11-21T11:40:51.663 に答える