JAVA开发问题之org.xml.sax.SAXParseException


问题描述

在调用Properties.loadFromXML时报错

org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 13; 文档根元素 "properties" 必须匹配 DOCTYPE 根 "null"。

示例代码

package com.wywtime.toolbox;

import org.junit.jupiter.api.Test;

import java.io.IOException;
import java.util.Properties;

public class PropertiesTest {

    @Test
    public void testLoadingXml() throws IOException {
        Properties properties = new Properties();
        properties.loadFromXML(this.getClass().getClassLoader().getResourceAsStream("test.xml"));
        System.out.println(properties.getProperty("name"));
    }

}

解决思路

这个问题解决思路需要深入loadFromXML,这个方法有相关注释

Loads all of the properties represented by the XML document on the specified input stream into this properties table.
The XML document must have the following DOCTYPE declaration:

所以在文档上添加相关DOCTYPE的声明即可

示例文档test.xml

<?xml version="1.0" encoding="utf-8" ?>


    bsmn