0

私はLinux OSに取り組んでいます。

Java を使用して XML ファイルを解析および変換する際に問題が発生しています。

Java XMLTransform.class の場所: /home/apps/source (このパスは CLASSPATH にあります) XML ファイルの場所 (作業ディレクトリ): /home/apps/nk/working/payload.xml

「作業ディレクトリ」内にいるとき、XML ファイル名のペイロード.xml を渡して XMLTransform.class を呼び出していますが、次のエラーが発生します。

XML-22004: (Fatal Error) Error while parsing input XML document (Invalid InputSource.).
---------
oracle.xml.parser.v2.XMLParseException: Invalid InputSource.
    at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:320)
    at oracle.xml.parser.v2.XMLReader.pushXMLReader(XMLReader.java:248)
    at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:202)
    at oracle.xml.jaxp.JXTransformer.transform(JXTransformer.java:321)
    at TransformationEngine.main(TransformationEngine.java:30)

クラスがファイル名を解決できないことは明らかです。

これを解決する方法を教えてください。

注:invoice_transformer.xsl は .class ファイルと同じディレクトリに配置され、CLASS ファイルはそれを読み取ることができます。

Java コード:

import javax.xml.transform.*;
import java.io.*;

public class TransformationEngine {
public static void main(String[] args){

    String payloadFileName = args[0];

    String xslFile = "invoice_transformer.xsl";

    InputStream is = java.lang.ClassLoader.getSystemResourceAsStream(xslFile);
    InputStream pfis = java.lang.ClassLoader.getSystemResourceAsStream(payloadFileName);

    try{
        TransformerFactory tFactory = TransformerFactory.newInstance();

        Transformer transformer = tFactory.newTransformer(new javax.xml.transform.stream.StreamSource(is));
        transformer.transform(new javax.xml.transform.stream.StreamSource(pfis),new javax.xml.transform.stream.StreamResult(new FileOutputStream("IDMpayload.csv")));

    }
    catch(Exception e){
        e.printStackTrace();
    }
}

}
4

1 に答える 1

0

getSystemResourceAsStream()CLASSPATH でリソースを探します。CLASSPATH にありません/home/apps/nk/working/(そうですか?)。

代わりに FileInputStream を使用します( @Banthar の提案による)

于 2012-06-28T21:50:48.293 に答える