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.