Создание файла XML с использованием StringTemple и Java - PullRequest
0 голосов
/ 23 января 2019

Мне нужно несколько советов о том, как создавать вложенные шаблоны с помощью библиотеки StringTemplate и Java.

Поэтому моя цель - создать файл XML, аналогично следующему:

<contacts>
    <friends>
        <close_friends>
            <close_friend>friend1</close_friend>
            <close_friend>friend2</close_friend>
            ...
        </close_friends>

        <acquaintances>
            <acquaintance>Acquaintance1<acquaintance>
            <acquaintance>Acquaintance2<acquaintance>
            ...
        </acquaintance>
    </friends>
    <colleagues>
        <colleague>Colleague1</colleague>
        <colleague>Colleague2</colleague>
        ....
    </colleagues>
</contacts>

Тем самымЯ планирую использовать StringTemplate в качестве языка шаблонов (https://theantlrguy.atlassian.net/wiki/spaces/ST/pages/1409116/Five+minute+Introduction) и Java в качестве языка программирования.

Я хотел бы не помещать все в один файл шаблона, а разбивать его на части:

Я хочу иметь основной шаблон contacts.st (g):

<contacts>
    <friends>
        <close_friends>
            $close_friends:close_friend(); separator="\n"$
        </close_friends>

        <acquaintances>
            $acquaintances:acquaintance(); separator="\n"$
        </acquaintance>
    </friends>
    <colleagues>
        $colleagues:colleague(); separator="\n"$
    </colleagues>
</contacts>

А для close_friends , коллег и знакомых Я хочу иметь отдельные шаблоны / группы (close_friend.st (g); colleague.st (g); и acquaintance.st (g)).

Я представляю (например) close_friend.st (g)чтобы выглядеть примерно так:

<close_friend>$friend.name$</close_friend>

Итак, мой первый вопрос: использую ли я для этого StringTemplates или StringTemplateGroups? Я видел людей, использующих оба метода очень схожим образом, поэтому я не уверен, что взять.

Также я не совсем уверен, как передать информацию из основной темыПишите contact.st (g) своим дочерним элементам, например close_friends.st (g), потому что я хочу, чтобы шаблон close_friends.st (g) выполнялся для каждого члена списка (который содержит близких друзей) в моем основном шаблоне.

...