我正在创建一个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.
我认为文件路径中的空间正在产生问题。怎么解决?
答案 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转换器特有的。只需创建一个用于写入的文件就不会发生这种情况。