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 回答