Используйте родительский элемент XML в качестве контейнера для повторяющихся дочерних элементов?

Галочка Unix составляет 1 секунду (если я помню хорошо), и галочка.NET 100  наносекунды.

при обнаружении с проблемами с наносекундами Вы могли бы хотеть попытаться использовать AddTick (10000000 * значение).

9
задан bporter 22 July 2009 в 14:53
поделиться

3 ответа

Наличие родительского элемента упрощает идентификацию разделов XML и упрощает для обработчиков отображение дочерних элементов в коллекцию. Если у вас есть система, которая запрещает использование атрибутов (некоторые из них это делают, это раздражает), вам также необходимо использовать элементы оболочки, чтобы различать свойства (например, идентификаторы), которые принадлежат определенным дочерним элементам.

Кроме этого, это допустимо для опустите родительский элемент и это может сделать файл заметно менее подробным.

В вашем первом примере пользовательский элемент может быть смешан с записями, это допустимо, но это может быть трудно обнаружить:

<repository>
  <record>Record 1</record>
  <record>Record 2</record>
  <user>Bill</user>
  <record>Record 3</record>
</repository>

В то время как с окружающим вы можете разделить коллекцию и иметь несколько экземпляров этой коллекции:

<repositories>
  <users>
    <user>Bill</user>
  </users>
  <repository>
    <id>id1</id>
    <recordSet>
      <id>recordSet1</id>
      <record>Record 1</record>
      <record>Record 2</record>
      <record>Record 3</record>
    </recordSet>
    <recordSet>
      <id>recordSet2</id>
      <record>Record 1</record>
      <record>Record 2</record>
      <record>Record 3</record>
    </recordSet>
  </repository>
  <repository>
    <id>id2</id>
    <recordSet>
      <record>Record 1</record>
      <record>Record 2</record>
      <record>Record 3</record>
    </recordSet>
  </repository>
</repositories>
4
ответ дан 4 December 2019 в 12:20
поделиться

Это полезно, если в вашем вы хотите разрешить несколько элементы:

<repository>
  <recordSet id="1">
    <record>Record 1</record>
    <record>Record 2</record>
    <record>Record 3</record>
  </recordSet>
  <recordSet id="2">
    <record>Record 2.1</record>
    <record>Record 2.2</record>
    <record>Record 2.3</record>
  </recordSet>
</repository>
1
ответ дан 4 December 2019 в 12:20
поделиться

Вы наткнулись на второе из моих правил руководства по разработке XML (первое - использовать атрибуты только для идентификаторов и настоящие метаданные, третье - не использовать пространства имен, если вы не знаете, что делаете), которые я пытаюсь использовать при разработке документов xml. Помимо того, что это хорошее практическое правило, оно также упрощает моделирование вашего документа

  • в схеме XML или других языках проверки.
    • также проще повторно использовать сложный тип
  • легче читать (IMHO)
  • проще пользователям искать при перемещении по вашему документу
  • (вышеупомянутый) проще привязать к объекту ООП по вашему выбору

Я бы попробовал одно предложение:

<Root>
   <Items>
     <Item>a</Item>
     <Item>b</Item>
     <Item>c</Item>
   </Items>
</Root>

Более простой суффикс «s» более сжат, его легче запомнить и применить. Если вы используете родовое коллекционное существительное, вы или ваш коллега в конце концов забудете, какой именно, поэтому вы увидите Наборы, смешанные со Списками, смешанными с Контейнером. Но это больше стиль, чем хорошая практика, и я не хочу начинать религиозную войну;)

(UpperCamel для элементов !, lowerCamel для атрибутов! - извините)

10
ответ дан 4 December 2019 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: