【发布时间】: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