我正在与JSTL合作,但我还在学习。
我有一个像这样的xml:
<doc>
<header> my header </header>
<text>
<p> first paragraph</p>
<p> second paragraph</p>
<author>my author</author>
<p> third paragraph</p>
</text>
</doc>
我需要从中创建以下html:
<div class="text">
<p> first paragraph</p>
<p> second paragraph</p>
<author>my author</author>
<p> third paragraph</p>
</div>
我的代码如下:
<c:set var="xml_cont" value="${link.linkedObject.metadataAndContent}"/> //value is already valid xml
<x:set var="text" select="string($xml_cont//doc/text)"/>
<div class="text">${text}</div>
问题在于,这是擦除所有子节点,保留内容而不是标记。
我得到的HTML是:
<div class="text">
first paragraph
second paragraph
my author
third paragraph
</div>
如何保留子节点而不是将所有节点转换为纯文本?我在互联网上找不到任何东西。
情况并非如此,但如果我想将“作者”子节点转换为其他内容,那该怎么办:ex:
<div class="author">
非常感谢你的帮助。
答案 0 :(得分:1)
写作时
<x:set var="text" select="string($xml_cont//doc/text)"/>
string()
转换会删除<text>
元素的所有内容,但文本内容除外。请参阅string()和Element Nodes的字符串值部分。
我不知道jstl,所以我无法就如何解决这个问题提出建议,但如果我不得不在黑暗中刺伤我会尝试删除{{1函数调用并查看它是否提供了信息性错误消息。此外,由于您似乎只想复制string()
而不是<text>
本身的子项,因此我会在XPath表达式的末尾添加<text>
:
/*