2017-03-06 9 views
1

나는 자바 객체를 직렬화하고, 나는 다음과 같은 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

답변

2

예, HTML의 비 XHTML 버전과 달리 XML의 모든 태그는 닫히거나 자체 폐쇄되어야합니다.

모든 elements in XML는 자동 폐쇄이어야합니다 또는 일치 여는 태그와 닫는 태그로 구성해야합니다

element ::= EmptyElemTag | STag content ETag