由于文件路径中的空间,在创建xml文件期间出错

时间:2012-07-24 08:42:48

标签: java xml-parsing

我正在创建一个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.

我认为文件路径中的空间正在产生问题。怎么解决?

2 个答案:

答案 0 :(得分: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之前没有创建目录,那么我的简单示例将失败。

答案 1 :(得分: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转换器特有的。只需创建一个用于写入的文件就不会发生这种情况。