我试图用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文档?
答案 0 :(得分:1)
经过进一步调查后,我注意到w3定义的和xml文档的规范指定了一个&#39;格式良好的xml文档&#39;应该坚持
它包含一个或多个元素。
意味着零元素不是一种选择。输入的xml String是格式错误的xml字符串。