XML的根结束标记是必需的吗?

问题描述:

我用Java序列化的对象,而我得到了以下XML:XML的根结束标记是必需的吗?

<?xml version="1.0" encoding="UTF-8"?> 
<java version="1.8.0_92" class="java.beans.XMLDecoder"> 
    <object class="...." id="SmartLayout0"> 
    <!-- ... --> 
    </object> 

正如你看到的,根标记<java>未关闭。

XML中不合法关闭此根标签吗? XML标准是否明确允许这样的快捷方式?

+1

这是不合法的。如果您使用的是XMLEncoder,我怀疑您忘记调用XMLEncoder.close(),我认为它会生成结束标记。 – Joe

+0

@Joe你说得对,缺少'close()'是个问题,但由于解析器对于这样的XML是可以的,我不确定结束标记是否完全是强制性的。 – Xenos

是的,与HTML的非XHTML版本不同,XML中的所有标签都必须关闭或自闭合。

所有elements in XML必须是自闭或必须包含匹配开始和结束标记的:

element ::= EmptyElemTag | STag content ETag