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标准是否明确允许这样的快捷方式?
答
是的,与HTML的非XHTML版本不同,XML中的所有标签都必须关闭或自闭合。
所有elements in XML必须是自闭或必须包含匹配开始和结束标记的:
element ::= EmptyElemTag | STag content ETag
这是不合法的。如果您使用的是XMLEncoder,我怀疑您忘记调用XMLEncoder.close(),我认为它会生成结束标记。 – Joe
@Joe你说得对,缺少'close()'是个问题,但由于解析器对于这样的XML是可以的,我不确定结束标记是否完全是强制性的。 – Xenos