8

私はこの次のコードでいくつかの問題に直面しています

       try {
            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

            //root elements
            Document doc = docBuilder.newDocument();

            Element rootElement = doc.createElement("subcompany");
            doc.appendChild(rootElement);

            //id elements
            Element id = doc.createElement("id");
            id.appendChild(doc.createTextNode(subCompanyId != null ? subCompanyId : " "));
            rootElement.appendChild(id);

            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(doc);

            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");

            String xmlPath = "/project/MallDirectory/mall";

            //EDITED for File creation before writing.
            boolean isFileCreated = new File(xmlPath, "subcompany.xml").createNewFile();
            System.out.println(isFileCreated);                

            StreamResult result = new StreamResult(new File(xmlPath, "subcompany.xml"));

            transformer.transform(source, result);

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

実行した後、次のエラーが表示されます。

javax.xml.transform.TransformerException: java.io.FileNotFoundException: file:/project/MallDirectory/mall/subcompany.xml (No such file or directory)

以前は私の他のプロジェクトで動作していましたが、今回は動作しませんでした。ここで何がうまくいかなかったのですか?

EDITED:

ここに私が書き込もうとしているパスがあります。ファイルは作成されますが、空です。

ここに画像の説明を入力

4

4 に答える 4

21

私は問題を解決することができました。

エラーは次のとおりです。

javax.xml.transform.TransformerException: java.io.FileNotFoundException: file:/project/MallDirectory/mall/subcompany.xml (No such file or directory)

トランスフォーマーがこのパス 'file:/project/MallDirectory/mall/subcompany.xml' に xml を書き込もうとしている可能性があると考えています。ファイルパス「/project/MallDirectory/mall/subcompany.xml」を具体的に設定し、「file:/」をプレフィックスとして付けていないため、それがどのように発生したかはわかりません。

したがって、私は何とかこれを行うことでそれを修正することができました:

...

//ERROR CODE:
//StreamResult result = new StreamResult(new File(xmlPath, "subcompany.xml"));
//
StreamResult result = new StreamResult(new File(xmlPath, "subcompany.xml").getPath());
transformer.transform(source, result);

...
于 2013-03-11T04:19:20.170 に答える
0

「/project」がプロジェクト名の場合は、「./MallDirectory/mall」を試してください。それ以外の場合は、「./project/MallDirectory/mall」を試してください。ドットが含まれている文字列を注意深く観察してください。

于 2013-03-10T15:49:22.130 に答える
0

任意の時点で開いた状態にできるファイルの数は OS に固有であり (もちろん、構成可能)、その上限に達しています。アプリケーションのコード ベースを調べてください。ファイルを開こうとしているが、使用後にストリームを閉じていないコード。そのようなコードを確認してください。

于 2013-03-10T15:43:19.897 に答える
0

定義したディレクトリ パスが正しくありません。JavaDoc を参照して、ファイルの場所に到達するために必要なディレクトリ パスの形式を判断してください。

JavaDoc java.io.File

于 2013-03-10T15:43:33.747 に答える