Jdom2解析器与空xml文档

时间:2018-01-18 15:42:02

标签: java xml inputstream jdom-2

我试图用jdom2解析xml文档的字符串表示。我期待xml字符串

<?xml version=\"1.0\" encoding=\"UTF-8\"?>

是一个有效的xml文档。但是,当我运行这个简单的代码片段时:

import java.io.IOException;
import java.io.StringReader;
import org.jdom2.*;

public class Main {
    public static void main(String []args){
        SAXBuilder parser = new SAXBuilder();
        String data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
        try { 
            Document doc = parser.build(new StringReader(data));
        } catch (JDOMException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

我收到错误:

org.jdom2.input.JDOMParseException: Error on line 1: Premature end of file.
    at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:232)
    at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:303)
    at org.jdom2.input.SAXBuilder.build(SAXBuilder.java:1196)
    at testpack.Main.main(Main.java:32)

xml规范是否不允许没有根元素的xml有效负载? 如果没有,我应该如何检查xml文档是否为空?

编辑:我还注意到Document()类的Jdom2中的documentation表明

  

文档必须具有根元素,因此如果在添加根元素之前访问此文档,则此文档将不会格式正确,并且访问器方法将抛出IllegalStateException。

可能只是Jdom2不支持空的xml文档?

1 个答案:

答案 0 :(得分:1)

经过进一步调查后,我注意到w3定义的和xml文档的规范指定了一个&#39;格式良好的xml文档&#39;应该坚持

  

它包含一个或多个元素。

意味着零元素不是一种选择。输入的xml String是格式错误的xml字符串。