我试图读取一个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>
有人可以告诉我出了什么问题吗?
答案 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文件找到了什么包,你应该选择包下的哪些类。