Я создаю модель данных из XML-содержимого и пытаюсь использовать шаблон записи, который выбирает узел (содержащий дочерние узлы) из модели данных.Freemarker template simulation xs: copy-of behavior
final Map<String, NodeModel> root = new HashMap<String, NodeModel>();
root.put("doc", freemarker.ext.dom.NodeModel.parse(new InputSource(new StringReader(response))));
, где ответ:
<ns:Response xmlns:ns="urn:sdf.sdf.as.v1">
<ns:MessageBody>
<ns:Items>
<ns:Item>
<ns:ItemId>1</ns:ItemId>
</Item>
<ns:Item>
<ns:ItemId>2</ns:ItemId>
</Item>
</ns:Items>
</ns:MessageBody>
</ns:Response>
шаблон Я пытаюсь придумать это: $ {doc.Response.MessageBody.Items}
я получаю следующее исключение:
Ожидая строку, дату или номер здесь, Ex Pression doc.Response.MessageBody.Items вместо этого является freemarker.ext.dom.NodeListModel
Что я делаю неправильно? Может ли шаблон Freemarker работать на узле Element или он всегда должен быть значением узла? Может быть, потому, что мой шаблон не содержит пространства имен? Как мне ссылаться на пространства имен?
В любом случае, чтобы выводить узлы без пространств имен. Когда я использую @@ разметку, я получаю последовательность полных элементов, таких как: content. Я просто хочу содержание. – IanG