XPath を使用して特定の XML 要素を読み取り、.xml ファイルのテキスト フィールドに表示するデスクトップ アプリケーションを開発していますJFrame
。
これまでのところ、クラスでString
変数を渡すことにするまで、プログラムはスムーズに実行されました。File
public void openNewFile(String filePath) {
//file path C:\\Documents and Settings\\tanzim.hasan\\my documents\\xcbl.XML
//is passed as a string from another class.
String aPath = filePath;
//Path is printed on screen before entering the try & catch.
System.out.println("File Path Before Try & Catch: "+filePath);
try {
//The following statement works if the file path is manually written.
// File xmlFile = new File ("C:\\Documents and Settings\\tanzim.hasan\\my documents\\xcbl.XML");
//The following statement prints the actual path
File xmlFile = new File(aPath);
System.out.println("file =" + xmlFile);
//From here the document does not print the expected results.
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
docFactory.setNamespaceAware(true);
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(xmlFile);
doc.getDocumentElement().normalize();
XPath srcPath = XPathFactory.newInstance().newXPath();
XPathShipToAddress shipToPath = new XPathShipToAddress(srcPath, doc);
XPathBuyerPartyAddress buyerPartyPath = new XPathBuyerPartyAddress(srcPath, doc);
} catch (Exception e) {
//
}
}
xmlFile
を静的パスで定義すると (つまり、手動で記述すると)、プログラムは期待どおりに動作します。ただし、静的パスを記述する代わりに、パスを文字列変数として渡すとaPath
、期待される結果が出力されません。
少しグーグルで調べましたが、具体的なものは見つかりませんでした。