我的文件中有以下 xml
<knowledgecases>
<knowledgecase>
<caseid>101000000009</caseid>
<question>What can I put into my brown bin?</question>
<version />
</knowledgecase>
<knowledgecase>
<caseid>101000000006</caseid>
<question>What is ‘Scores on the Doors’?</question>
<version />
</knowledgecase>
</knowledgecases>
我正在尝试向 caseids 添加 1。
所以我尝试过这个
<c:import var="xml" url="<%=theUrl%>">
<c:param name="param1" value="${param.param1}"/>
<c:param name="param2" value="${param.param2}"/>
</c:import>
<body>
<x:parse xml="${xml}" var="output"/>
<ul class="list">
<x:forEach select="$output/knowledgecases/knowledgecase/caseid" var="newcaseid">
<c:set var="count" value="${newcaseid + 1}"/>
<li>adjacent case <x:out select="$count" /></li>
</x:forEach>
</ul>
</body>
我想让它显示
101000000010
101000000007
相反,我收到了错误
java.lang.IllegalArgumentException: Cannot convert [caseid: null] of type class com.sun.org.apache.xerces.internal.dom.DeferredElementNSImpl to Number
如果我改变
value="${newcaseid + 1} to value="${newcaseid}
显示
101000000009
101000000006
不知道自己做错了什么
最佳答案
newcaseid
var 是 org.w3c.dom.Node ,并且不能直接在表达式语言中使用。您必须首先将其转换为 EL 可以使用的内容(数字或字符串)。
你可以让它像这样工作:
<x:parse xml="${xml}" var="output"/>
<ul class="list">
<x:forEach select="$output/knowledgecases/knowledgecase/caseid" var="newcaseid">
<c:set var="current"><x:out select="$newcaseid"/></c:set>
<li>adjacent case <c:out value="${current + 1}" /></li>
</x:forEach>
</ul>
关于java - 在 JSP 中将 xml 选择转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20137386/