Список узлов против узла против элемента

#xml #nodes #element #nodelist

#xml #узлы #элемент #список узлов

Вопрос:

Если у вас был XML-файл, подобный этому

 <Users>
  <student>
    <firstname> Chris </firstname>
    <lastname> Smith </lastname>
    <address> 1313 Mockingbird Lane </address>
    <phone> 555-1313 </phone>
  </student>
  <student>
    <firstname> John </firstname>
    <lastname> Doe </lastname>
    <address> 1526 Bluebird Way </address>
    <phone> 555-8324 </phone>
  </student>
</Users>
 

Тогда бы…

  1. Пользователи считаются списком узлов?
  2. Студент будет считаться элементом или списком узлов? Тег student содержит больше тегов, но он также является дочерним для тега Users . Так это будет элемент или список узлов?
  3. Значение «John» является узлом?

Если я ошибаюсь в одном из них, не могли бы вы сказать мне, как узнать разницу между узлом, элементом и списком узлов?

Ответ №1:

Вы смешиваете некоторую неопределенную терминологию, и важно отделять общие понятия от конкретных значений в контексте XML.

В XML «элементом» является a <tag>...</tag> , и это определение может быть рекурсивно применено к вложенным тегам (элементы могут содержать элементы).

Node и NodeList являются общими понятиями. A Node — это, грубо говоря, отдельный объект с некоторым внутренним состоянием. Название Node подразумевает, что объект может быть или является членом некоторой коллекции, часто, но не всегда списком.

A NodeList — это просто линейный список узлов. Существуют другие типы коллекций, которые могут содержать узлы, такие как Map или Graph или Tree .

В вашем примере:

Users является элементом XML. Концептуально это также узел в дереве XML. Он содержит student элементы, поэтому он также является коллекцией, и поскольку элементы расположены линейно, это также список узлов.

A student — это элемент XML, и концептуально он также является a node в списке учащихся.

firstname Тег (и все, что внутри него) также является элементом XML и узлом в XML-дереве узлов.

Значение John не является элементом, как определено в XML. Он text node содержится в firstname .