我是XML新手。我试图在XML中定义键值对,以便此文件可以用作我的项目的配置文件。我在java中加载这个xml文件时遇到错误。请让我知道如何解决这个问题。
XML文件(data.xml):
<?xml version="1.0"?>
<object>
<field name="property1" value="1">
<field name="property2" value="2">
<field name="property3" value="3">
<field name="property4" value="4">
</object>
</xml>
Java代码:
import java.io.*;
import java.util.*;
import java.util.prefs.Preferences;
public class PreferencesExample {
public static void main(String args[]) throws FileNotFoundException {
Preferences ps = Preferences.userNodeForPackage(PreferencesExample.class);
// Load file object
File fileObj = new File("data.xml");
try {
FileInputStream fis = new FileInputStream(fileObj);
ps.importPreferences(fis);
System.out.println("Prefereces:"+ps);
System.out.println("Get property1:"+ps.getInt("property1",10));
} catch (Exception err) {
err.printStackTrace();
}
}
}
我在java中加载这个xml时遇到了以下错误。
&GT;
java.util.prefs.InvalidPreferencesFormatException: org.xml.sax.SAXParseException;
lineNumber: 2; columnNumber: 9; Document root element "object", must match DOCTYPE root "null".
at java.util.prefs.XmlSupport.importPreferences(XmlSupport.java:216)
at java.util.prefs.Preferences.importPreferences(Preferences.java:1259)
可能的根本原因是什么?我怀疑XML文件格式,但我没有XML专业知识
答案 0 :(得分:3)
您的xml文件应采用以下格式
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE preferences SYSTEM 'http://java.sun.com/dtd/preferences.dtd'>
<preferences EXTERNAL_XML_VERSION="1.0">
<root type="user">
<map />
<node name="com">
<map />
<node name="mypack">
<map />
<node name="test">
<map>
<entry key="property1" value="80" />
<entry key="property2" value="Red" />
</map>
</node>
</node>
</node>
</root>
</preferences>
,节点名称是PreferencesExample类的包名称。在这个例子中,它是com / mypack / test。
此链接可能对java preferences
有帮助