2013-09-14 2 views
0

Я работаю над созданием документа XML для моего текущего варианта использования. Мой прецедент -Как представлять данные списка в XML

Учитывая идентификатор, я могу проверить счет и количество талантов и количество категорий. И каждая категория будет иметь идентификатор категории, чек-счет и показатель таланта.

Так что предположим, что если у меня есть два идентификатора, то вышеуказанные данные будут там в двух идентификаторах.

Например, ниже мой XML, который я создал базу на одном id-

<?xml version="1.0" encoding="UTF-8" ?> 
    <id>0</site-id> 
    <check-score>0.5</check-score> 
    <talent-score>0.2</talent-score> 
    <categories> 
     <category-id>123</category-id> 
     <check-score>0.5</check-score> 
     <talent-score>0.2</talent-score> 
    </categories> 
    <categories> 
     <category-id>321</category-id> 
     <check-score>0.2</check-score> 
     <talent-score>0.4</talent-score> 
    </categories> 

Что произойдет, если у меня есть еще id со значением как 1 и соответствующих вещей, связанных с этим id. Смысл, как мне представить второй id и другие компоненты, связанные с этим в моем примере выше? Должен ли я делать что-то подобное, если у меня есть два идентификатора?

<?xml version="1.0" encoding="UTF-8" ?> 
    <id>0</site-id> 
    <check-score>0.5</check-score> 
    <talent-score>0.2</talent-score> 
    <categories> 
     <category-id>123</category-id> 
     <check-score>0.5</check-score> 
     <talent-score>0.2</talent-score> 
    </categories> 
    <categories> 
     <category-id>321</category-id> 
     <check-score>0.2</check-score> 
     <talent-score>0.4</talent-score> 
    </categories> 

    <id>1</site-id> 
    <check-score>0.2</check-score> 
    <talent-score>0.3</talent-score> 
    <categories> 
     <category-id>289</category-id> 
     <check-score>0.3</check-score> 
     <talent-score>0.7</talent-score> 
    </categories> 
    <categories> 
     <category-id>987</category-id> 
     <check-score>0.1</check-score> 
     <talent-score>0.5</talent-score> 
    </categories> 

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

Может ли кто-нибудь помочь мне в этом?

+0

ohhkk ... Но тогда как будут выглядеть мои данные по категориям? Можете ли вы привести пример, если это возможно, чтобы иметь для меня больше смысла? –

ответ

0

Я следую правилу «использование контейнеров для несвязанной множественности» в XML.

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

Например, чтобы использовать контейнеры для кратности:

<someRelevantRootElement> 
    <sites> 
    <site site-id="0"> 
     <!-- not sure what scores are doing there --> 
     <categories> 
     <category category-id="123"> 
      <scores check="0.5" talent="0.2" /> 
     </category> 
     <category category-id=".."> 
      <!-- .. --> 
     </category> 
     <!-- more categories? --> 
     </categories> 
    </site> 
    <site side-id=".."> 
     <!-- .. --> 
    </site> 
    <!-- more sites? --> 
    </sites> 
</someRelevantRootElement> 

Также обратите внимание, что я преобразовал некоторые элементы атрибутов. Использование элемента для «id» почти всегда неверно, так как id описывает аспект некоторой информации (элемент read:).

Конечно, это может быть так, что оценки является контейнером, а категория (идентификатор) является лишь аспектом (атрибут) такой информации оценки (элемент).

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

+0

Спасибо. Я пытаюсь проверить XML, но он не проверяется? Есть предположения? –

+0

Интересное правило. Я думаю, что это «облегчило бы жизнь» только в том, что вам не придется каждый раз решать, использовать ли контейнер. Я по-прежнему отказываюсь от этого во многих случаях, хотя и без особого обоснования. Может быть, я просто чувствую, что XML уже достаточно подробный :) – harpo

+1

@harpo XML * не подразумевается *, чтобы быть просто дружественным для человека или кратким - вот почему JSON приобрел большую популярность в тех случаях, когда эти аспекты * желательны. Существует огромная * оснастка * экосистемы, чтобы сделать XML потребляемым и * очень мощным. Я говорю «облегчает жизнь» из личного опыта - схема (и общий подход), представленная выше, легче запрашивать, изменять, потреблять и расширять. Руки вниз.Не стесняйтесь следовать своему пути :) – user2246674

Смежные вопросы