如何从同一个包中读取file.xml?

时间:2014-08-21 07:57:55

标签: java xml

我试图读取一个Properties.xml文件,该文件包含在我班级所在的同一个包中。

我使用此代码使用新值更新我的xml文件:

到目前为止,我想阅读文件:

public void UPdateXML(String filename) throws Exception {
    this.filename = filename;
        System.out.println("Into update xml class");
    try {   
        InputStream fis=BACENGPropertiesFile.class.getResourceAsStream(filename);
        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
        Document doc = docBuilder.parse((InputStream) fis);

        System.out.println(fis);
        System.out.println(doc);

    Node child = doc.getFirstChild();
        System.out.println(child);

该文件似乎存在并正在作为ImputStream进行读取。但是当我尝试将文件解析为Document(doc)时,该值为null。

这是从服务器日志退出:

Into update xml class
java.io.BufferedInputStream@78355ed4
[#document: null]
[properties: null]

Properties xml文件具有以下结构:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
 <properties>
  <entry key="dataImport.path">/Users/Admin/Documents/</entry>
 </properties>

有人可以告诉我出了什么问题吗?

2 个答案:

答案 0 :(得分:1)

没有错。您的文档不为空:它打印为:

[#document: null]

如果是null,则会打印出来:

null

顺便说一下,为什么不通过Properties.loadFromXML()加载属性?

Properties p = new Properties();
try (InputStream in = BACENGPropertiesFile.class.getResourceAsStream(filename)) {
    p.loadFromXML(in);
}

答案 1 :(得分:0)

您将Properties.xml放在哪个包中?如果它在UPdateXML的包装下,请更改:

InputStream fis=BACENGPropertiesFile.class.getResourceAsStream(filename);

InputStream fis=UPdateXML.class.getResourceAsStream(filename);

无论如何,你的xml文件找到了什么包,你应该选择包下的哪些类。