【问题标题】:Jdom2 parser with empty xml document带有空 xml 文档的 Jdom2 解析器
【发布时间】:2018-01-18 15:42:02
【问题描述】:

我正在尝试使用 jdom2 解析 xml 文档的字符串表示形式。我期望 xml 字符串

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

成为有效的 xml 文档。但是当我运行这个简单的代码 sn-p:

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文档是否为空?

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

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

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

【问题讨论】:

  • 长度为 0 的 .xml 文件似乎是“空 XML 文件”的最佳定义。
  • @JoopEggen 这将排除具有有效标题的 .xml,例如我的问题中提出的情况。
  • 请注意:我的 xml 字符串是从远程服务器应用程序接收的,它可能是问题的文档来源

标签: java xml inputstream jdom-2


【解决方案1】:

经过进一步调查,我注意到w3 定义的 xml 文档规范指定“格式良好的 xml 文档”应遵守

它包含一个或多个元素。

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

【讨论】:

    猜你喜欢
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 2021-10-24
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    相关资源
    最近更新 更多