java - 无法将键值对 XML 作为 java 首选项加载

标签 java xml

我是 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 时出现以下错误。

>

 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 方面的专业知识

最佳答案

您的 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 有帮助

关于java - 无法将键值对 XML 作为 java 首选项加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31938305/

相关文章:

java - 将字符串存储到包含出现次数的哈希表中

c# - XML 比较,用于检查窗口应用程序是否相同或不同

Android:XML 中带有换行符的字符串值

Java 文件 : Content not allowed in prolog

java - 在 JSTL 中使用枚举

java - Double to String,如何删除点后的0

Java透明面板和面板上的自定义效果

java - Android:在 TabHost Activity 中显示不确定的进度条

javascript - xml转js代码问题

python - 在 Python 中逐项列出大型 xml 文件