Transformer failed to transform DomSource to StreamResult, if the StreamResult
is created with a File and the file name contain space charactor
-----------------------------------------------------------------------------------------------------------------------------------------------
Key: XALANJ-2511
URL: https://issues.apache.org/jira/browse/XALANJ-2511
Project: XalanJ2
Issue Type: Bug
Security Level: No security risk; visible to anyone (Ordinary problems in
Xalan projects. Anybody can view the issue.)
Components: Serialization
Affects Versions: 2.7.1
Environment: Windows Server 2003
Reporter: Owen Chang
Problem:
I use the transformer to write a dom document to a file, so I use a DOMSource,
and a StreamResult. I create a Stream Result using the contructor:
public StreamResult(File f)
and the file path I used includes space charactor, like "E:\Program
Files\XXXX.xsd", and I run it, the error occurs:
java.io.FileNotFoundException: E:\Program%20Files\XXXX.xsd
Analysis:
When I create the StreamResult, the constructor call its setSystemId method, in
that method, the file path is converted to a URI, the code like this:
this.systemId = f.toURI().toString();
So, The systemId stored in StreamResult is like:
file:\\\E:\Program%20Files\XXXX.xsd
But in the TransformerIdentityImpl(org.apache.xalan.transformer)'s
createResultContentHandler method, it convert the uri to filepath and use
FileOutputStream to open the file. The convert logic is as following:
String fileURL = sresult.getSystemId();
if (fileURL.startsWith("file:///")) {
if (fileURL.substring(8).indexOf(":") >0) {
fileURL = fileURL.substring(8);
} else {
fileURL = fileURL.substring(7);
}
} else if (fileURL.startsWith("file:/")) {
if (fileURL.substring(6).indexOf(":") >0) {
fileURL = fileURL.substring(6);
} else {
fileURL = fileURL.substring(5);
}
}
The problem is that it does not decode the %20 charactor to space charactor.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]