XML에서 요소와 노드의 차이점은 무엇입니까?


370

XML을 사용하여 Java로 작업하고 있으며 궁금합니다. 요소와 노드의 차이점은 무엇입니까?


7
물론 w3c를 살펴보십시오 . 데이터 모델은 이해하기 쉽습니다.
xtofl

15
forums.asp.net/t/443912.aspx/1#443940의 큰 의견 : 과일과 사과 사이와 동일합니다. 모든 XmlElement는 XmlNode이지만 모든 XmlNode가 XmlElement는 아닙니다. XmlElement는 XmlNode의 한 종류 일뿐입니다. 다른 사람은 XmlAttribute, XmlText 등입니다.
atconway

2
요소는 올바른 형식의 XML 문서에 대한 공식적인 정의의 일부인 반면 노드는 XML 문서를 처리하기위한 문서 개체 모델의 일부로 정의됩니다.
Jool

답변:


259

Node 객체는 전체 DOM의 기본 데이터 유형입니다.

노드는 요소 노드, 속성 노드, 텍스트 노드 또는 "노드 유형"장에 설명 된 다른 노드 유형일 수 있습니다.

XML 요소는 요소의 시작 태그 (포함)부터 요소의 끝 태그 (포함)까지의 모든 것입니다.


122
이제 대답을 이해 했으므로 ... 협약은 어리 석습니다. 단어는 다른 방향이어야합니다. 자연 영어에서 '요소'는 가장 기본적인 빌딩 블록이며, 그 밖의 모든 것이 만들어집니다. 즉, 자연의 영어 요소는 ... 더 일반적이다
샘 Svenbjorgchristiensensen

11
@Juan Mendes : 이것이 DOM에 따른 것이지만, Sam의 요점은 "element"가 실제로 영어로 가장 기본적인 빌딩 블록을 참조 할 때 DOM이 노드보다 기본 (기본) 노드를 고려한다는 것입니다.
BoltClock

16
@SamSvenbjorgchristiensensen 그것은 정확하지 않습니다. 요소는 다시 쿼크로 나눌 수 있습니다 양성자, 중성자, 전자, 중성미자 등이 그것에서 무엇을 '노드'는 이해하는 것이 낫다 같은 '구성 부분'으로 더 나눌 수 있습니다 그래프 이론을 , 그리고 당신은거야 XML 디자이너가 왜 그 이름을 선택했는지 이해하십시오 (DOM은 계층 적 그래프 일뿐입니다).
Les Hazlewood

20
사실 @LesHazlewood, 단어 "요소"가 있기 때문에 물리적 요소 (수소, 헬륨 등)을 설명하는 데 사용 했던 그 일을 나눌 수 있었다 생각합니다. 그들은 나중에 그들이 틀렸다는 것을 알았습니다. 이름을 바꾸기에는 너무 늦었습니다. ) 나는 Sam의 이름과 차별화 된 dom 요소 대 노드의 방식이 혼란스럽고 (html 사양의 많은 부분과 같이) 잘 생각하지 않는 Sam에 동의합니다.
BT

3
@BT는 XML 스펙위원회가 고대 그리스에 살았다면 논란의 여지가있을 것이다. 노드에 대한 그래프 이론 지식으로 이것을 추가하면 실제로 해석의 여지가 많지 않습니다.
Les Hazlewood

68

서로 다른 W3C 사양은 서로 다른 "노드"유형 세트를 정의합니다.

따라서 DOM 스펙 은 다음 유형의 노드를 정의합니다.

  • Document- Element(일 최대), ProcessingInstruction, Comment,DocumentType
  • DocumentFragment - Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • DocumentType -아이들이 없다
  • EntityReference - Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • Element- Element, Text, Comment, ProcessingInstruction, CDATASection,EntityReference
  • Attr- Text,EntityReference
  • ProcessingInstruction -아이들이 없다
  • Comment -아이들이 없다
  • Text -아이들이 없다
  • CDATASection -아이들이 없다
  • Entity- Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • Notation -아이들이 없다

XML 인포 셋 (XPath에 의해 사용되는) 노드의 작은 세트가 있습니다 :

  • 문서 정보 항목
  • 요소 정보 항목
  • 속성 정보 항목
  • 처리 지시 정보 항목
  • 확장되지 않은 엔터티 참조 정보 항목
  • 캐릭터 정보 아이템
  • 코멘트 정보 항목
  • 문서 유형 선언 정보 항목
  • 해석되지 않은 엔티티 정보 항목
  • 표기법 정보 항목
  • 네임 스페이스 정보 항목
  • XPath에는 다음과 같은 노드 유형이 있습니다.

    • 루트 노드
    • 요소 노드
    • 텍스트 노드
    • 속성 노드
    • 네임 스페이스 노드
    • 처리 명령 노드
    • 주석 노드

    " 요소와 노드의 차이점은 무엇입니까? " 라는 질문에 대한 대답 은 다음과 같습니다.

    An element is a type of node. Many other types of nodes exist and serve different purposes.


    29

    노드는 DOM 트리의 일부이며 요소는 특정 유형의 노드입니다.

    예 : <foo> This is Text </foo>

    foo 요소 (요소가 Node에서 상속됨에 따라 노드 임)와 foo 요소 / 노드의 자식 인 텍스트 노드 'This is Text'가 있습니다.


    7
    이 짧은 예는 선택한 답변보다 더 많은 이해를 제공합니다.
    KMC

    27

    노드는 텍스트, 주석, 요소, 엔터티 등 여러 가지 종류가 될 수 있습니다. 요소는 특정 종류의 노드입니다.


    15

    다양한 XML에서 설명 된 바와 같이 사양 ,는 element(어떤 콘텐츠 또는 종료 태그 없음)의 시작 태그와 종료 태그 사이의 내용 또는 교대 빈 요소 태그로 구성되어있는 점이다. 다시 말해, 다음은 모두 요소입니다.

    <foo> stuff </foo>
    <foo bar="baz"></foo>
    <foo baz="qux" />

    "노드"가 거의 같은 의미로 사용된다고 들지만 XML 사양에 따라 정확한 정의는 없습니다. 일반적으로 XML과 밀접한 관련이 있거나 XML을 표현에 사용할 수있는 DOM과 같은 노드를 나타내는 데 사용됩니다.


    11

    xml 문서는 중첩 요소로 구성됩니다. 요소는 시작 태그 에서 시작 하여 종료 태그 에서 끝납니다 . 당신은 아마 볼 수있는 <body></body>HTML한다. 여는 태그와 닫는 태그 사이의 모든 것은 요소의 내용 입니다. 요소가 자체 닫힘 태그 (예 :)로 정의 된 경우 <br/>내용이 비어 있습니다.

    여는 태그는 속성 을 지정할 수도 있습니다 ( 예 : <p class="rant">. 이 예에서 속성 이름 은 'class'이고 값은 'rant'입니다.

    XML 언어에는 'node'와 같은 것이 없습니다 . spec을 읽으십시오 . 단어가 발생하지 않습니다.

    어떤 사람들은 '노드'라는 단어를 비공식적으로 사용하여 요소를 의미하는데, 일부 파서는 단어에 기술적 의미를 부여하기 때문에 ( '텍스트 노드'와 '요소 노드'를 식별하기 때문에) 혼동됩니다. 정확한 의미는 파서에 따라 다르므로 사용중인 파서를 명시하지 않으면 단어가 잘못 정의됩니다. element를 의미한다면 'element'라고 말하십시오 .


    "(즉, 정규식에 대한 구문 트리의 각 리프 노드)"라는 단어가 발생합니다. 비 규범 적 부록에 있지만 그럼에도 불구하고 발생합니다. 이 용어는 구문 분석 트리에서 노드로 사용됩니다.
    skyking

    XML 정의가 노드를 언급하지 않는다고 생각하더라도 (동일한 표준 조직에 의해) XML의 프로그래밍 방식의 해석 및 조작을 위해 정의 된 DOM (Document Object Model)은 실제로 "노드"라는 용어를 정의하고 사용합니다. 이 답변은 용어를 차별화하는 데 도움이되지 않으며, 동일한 의미를 가지고 있다고 주장함으로써 다양한 용도를 무시하는 데 도움이되지 않습니다.
    C Perkins

    9

    노드는 요소와 속성 (및 기본적으로 다른 모든 XML 표현)의 기본 클래스입니다.


    7

    요소 는 하위 노드 및 속성을 가질 수 있는 유일한 종류의 노드 입니다.

    또한 문서에는 자식 노드가 있지만
    속성이없고 텍스트가 없으며 정확히 하나의 자식 요소가 있습니다.


    2

    노드는 다음 과 같이 정의 됩니다.

    문서에서 유효하고 완전한 구조의 가장 작은 단위.

    또는

    트리 뷰에서 관련 개체를 보관하는 컨테이너 역할을하는 개체입니다.

    이제 그것들은 요소 노드, 속성 노드 등 다양한 종류의 노드입니다.


    1

    이제는 요소가 노드 중 하나라는 것을 알고 있습니다.

    여기에있는 모든 노드 유형 " http://www.w3schools.com/dom/dom_nodetype.asp "

    요소가 시작 태그와 종료 태그의 끝 사이에 있음

    따라서 텍스트 노드는 노드이지만 요소는 아닙니다.



    -3

    XML 요소는 XML 노드이지만 속성과 같은 추가 요소가 있습니다.

    <a>Lorem Ipsum</a>  //This is a node
    
    <a id="sample">Lorem Ipsum</a>  //This is an element

    이 주장에 대한 출처가 없다고 생각합니까? 예를 들어, XML 표준은 "element"라는 용어를 빈 요소 태그 또는 시작 태그를 포함하여 종료 태그를 포함한 모든 요소로 정의합니다. 시작 태그와 빈 요소 태그에는 요소가 필요 하지 않습니다 . 두 가지 예 모두 요소입니다. "노드"라는 용어는 텍스트 자체가 아닌 객체 모델에 관한 DOM의 다른 곳에 정의되어 있습니다.
    skyking

    -7

    노드와 요소가 동일합니다. 모든 요소는 node이지만 모든 노드가 요소 여야하는 것은 아닙니다.


    9
    "모든 노드가 요소 여야하는 것은 아닙니다"이므로 "노드와 요소가 동일합니다"라는 주장이 잘못되었습니다.
    glglgl

    1
    귀하의 설명 외에는, 그다지 유용하지 않습니다. 당신이 옳은 것은 용어 사이에 약간의 차이가 있다는 것입니다.
    skyking
    당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
    Licensed under cc by-sa 3.0 with attribution required.