Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有空xml文档的Jdom2解析器_Java_Xml_Inputstream_Jdom 2 - Fatal编程技术网

Java 带有空xml文档的Jdom2解析器

Java 带有空xml文档的Jdom2解析器,java,xml,inputstream,jdom-2,Java,Xml,Inputstream,Jdom 2,我试图用jdom2解析xml文档的字符串表示形式。我希望是xml字符串 <?xml version=\"1.0\" encoding=\"UTF-8\"?> xml规范不允许没有根元素的xml负载吗? 如果不是,我应该如何检查xml文档是否为空 编辑:我还注意到Jdom2中Document()类的 文档必须具有根元素,因此,如果在添加根元素之前访问此文档,则此文档的格式将不正确,并且访问器方法将抛出IllegalStateException 可能只是Jdom2不支持空的xml文档?

我试图用jdom2解析xml文档的字符串表示形式。我希望是xml字符串

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
xml规范不允许没有根元素的xml负载吗? 如果不是,我应该如何检查xml文档是否为空

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

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


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

在进一步调查之后,我注意到,和定义的xml文档规范指定“格式良好的xml文档”应该遵守

它包含一个或多个元素


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

长度为0的.xml文件似乎是“空xml文件”的最佳定义。@JoopEggen将排除具有有效标头的.xml,比如我问题中的例子。请注意:我的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)