#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>
Тогда бы…
- Пользователи считаются списком узлов?
- Студент будет считаться элементом или списком узлов? Тег student содержит больше тегов, но он также является дочерним для тега Users . Так это будет элемент или список узлов?
- Значение «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
.