java - 系统找不到文件指定的文档 document = documentBuilder()

标签 java xml

在此

Document document = documentBuilder.parse(filename);

我正在尝试通过缓冲输入流读取一组Xml文件。当我在命令提示符中输入文件时,出现错误 As System Cannot find the specified File 。有人可以建议如何从这里继续

import java.io.File;
import java.io.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class XMLFile {

    public static void main(String argv[]) {
        try {

            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
                    .newInstance();
            DocumentBuilder documentBuilder = documentBuilderFactory
                    .newDocumentBuilder();
            BufferedReader bufferRead = new BufferedReader(
                    new InputStreamReader(System.in));
            String s = bufferRead.readLine();
            File dir = new File(s);
            String[] children = dir.list();
            if (children == null) {
            } else {
                for (int i = 0; i < children.length; i++) {
                    String filename = children[i];
                    Document document = documentBuilder.parse(filename);
                    System.out.println(filename);
                    NodeList employees = document
                            .getElementsByTagName("connection");
                    for (int q = 0; q < employees.getLength(); q++) {
                        System.out.println(employees.getLength());
                        Node employee = employees.item(q);
                        NamedNodeMap attribute = employee.getAttributes();
                        Node nodeAttr = attribute.getNamedItem("server");
                        nodeAttr.setTextContent("aventador.am.lilly.com:1530");
                        Node nodeAttr1 = attribute.getNamedItem("service");
                        Node nodeAttr2 = attribute.getNamedItem("port");
                        nodeAttr1.setTextContent("tst806");
                        nodeAttr2.setTextContent("");

                    }
                    System.out.println(filename);
                    TransformerFactory transformerFactory = TransformerFactory
                            .newInstance();
                    Transformer transformer = transformerFactory
                            .newTransformer();
                    DOMSource domSource = new DOMSource(document);
                    StreamResult streamResult = new StreamResult(new File(
                            filename));
                    transformer.transform(domSource, streamResult);
                    System.out.println("The XML File was ");
                }
            }

        } catch (ParserConfigurationException pce) {
            pce.printStackTrace();
        } catch (TransformerException tfe) {
            tfe.printStackTrace();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SAXException sae) {
            sae.printStackTrace();
        } catch (Exception sae1) {
            sae1.printStackTrace();
        }
    }
}

最佳答案

在 else block 中,您尝试执行 Document document = documentBuilder.parse(filename);

文件名参数应该是一个 URI - 意思是完整的文件路径。但是您只传递文件名,因此无论您的输入目录是什么,DocumentBuilder 都会在当前目录中查找 XML 文件。更改以下行

字符串文件名=children[i];

字符串文件名=dir.getAbsolutePath()+File.separator+children[i];

这应该可以解决问题。

关于java - 系统找不到文件指定的文档 document = documentBuilder(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25794980/

相关文章:

java - 在 Java Web 应用程序中从应用程序服务器外部提供静态数据的最简单方法

java - Android - JSONArray 上的 toString 使用双引号和反斜杠使 json 无效

java - Math.pow(2,63) - 1 == Math.pow(2,63) - 512 为真

java - 使用 XSL 中的样式将 XML 转换为 PDF

java - 如何使用Digester将XML解析为Java对象

xml - 如何在 xpath 中定义默认的 salesforce 命名空间

java - 如何借助j2me项目res文件夹中的证书发送http请求?

java - getChild 查看项目 onClickListener 正在影响 ExpandableListView Android 中的所有子项目

java - 基于spring xml的bean定义, `bean`元素的类属性

java - 使用 JAXB 解码将 XML 转换为 Java