Так что этот класс называется StrSubstitutor в org.apache.commons.lang3.text, который может взять на карте, как это:Java - извлечение пар ключ-значение из строки с помощью шаблона
Map<String, String> params = new HashMap<String, String>();
params.put("name","Vivek");
params.put("id","900");
params.put("somethingelse","blah");
и шаблон строки следующим образом:
<data>
<id>${id}</id>
<name>${name}</name>
<something>${somethingelse}</something>
</data>
для получения строки вывода, как это:
<data>
<id>900</id>
<name>Vivek</name>
<something>blah</something>
</data>
То, что я хочу наоборот. Есть ли способ, которым я могу взять строку вывода и шаблон для заполнения карты переменной шаблона в качестве ключа и соответствующего значения в строке в качестве значения?
PS - строка, которую я буду использовать, необязательно всегда является XML. Это просто для примера.
EDIT: Я думаю, некоторые из них смущены, поскольку имена переменных и имена тегов были одинаковыми. Теги являются только иллюстративными и не имеют отношения к проблеме. Это переменные внутри $ {}, о которых я беспокоюсь. Я добавил еще один тег, чтобы показать, что я имею в виду.
Знаете ли вы список возможных тегов (например, «id», «name» и т. Д.), Или вам нужно решение для неизвестных тегов? – c0der
@ c0der Теги неактуальны. Если вы имеете в виду переменные - да, это лучше, если оно неизвестно. В основном я хочу разобрать все, заключенное в $ {} –
. Если вы хотите, чтобы решение было общим и эффективным, вам придется проанализировать эту структуру. Такие простые примеры можно проанализировать с помощью рукописных парсеров. Если этот пример является частью более крупной спецификации, вам может быть лучше рассмотреть генератор парсера. – CoronA