简体   繁体   中英

Jdom2 parser with empty xml document

I am trying to parse a string representation of a xml document with jdom2. I expect the xml string

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

to be a valid xml document. But when I run this simple code snippet:

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);
        }
    }
}

I receive the error:

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)

Does the xml specification not allow an xml payload without an root element? If not, how should I check if the xml document is empty?

Edit: I also noticed that the documentation in Jdom2 for the Document() class states that

A document must have a root element, so this document will not be well-formed and accessor methods will throw an IllegalStateException if this document is accessed before a root element is added.

It might just be that Jdom2 doesn't support empty xml documents?

After further investigation I have noted that the specification for and xml document as defined by w3 specifies that a 'Well formed xml document' should adhere to

It contains one or more elements.

Meaning zero elements is not an option. The input xml String is a malformed xml string.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM