Jstl:解析包含子标记的xml节点内容



我正在使用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>

我怎么能保留子节点,而不是把所有变成纯文本?我在网上找不到任何东西。

这不是情况,但如果我想把"作者"子节点在其他东西:例如:

 <div class="author">

非常感谢你的帮助

当你写

<x:set var="text" select="string($xml_cont//doc/text)"/>

string()转换删除<text>元素的所有内容,除了文本内容。参见string()和Element Nodes的字符串值部分。

我不知道jstl,所以我真的不能建议如何解决这个问题,但如果我不得不在黑暗中尝试删除string()函数调用,看看它是否给出了一个信息错误消息。此外,由于您似乎只想复制<text>的子节点,而不想复制<text>本身,因此我会在XPath表达式的末尾添加/*:

<x:set var="text" select="$xml_cont//doc/text/*"/>

相关内容

  • 没有找到相关文章

最新更新