java - 在 JSP 中将 xml 选择转换为数字

标签 java xml jsp

我的文件中有以下 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/

相关文章:

c# - 这段从 Java 到 C# 的代码片段正确吗?

java - 无法解析类型 android.content.Context。它是从所需的 .class 文件中间接引用的

python - 解析包含多个 xml 的文件

php - 使用 simplexml 将 XML 导入 MySQL

java - 在/上找不到资源上的 SpringMVC Controller

java - 有人能解释一下 struts 应用程序中的请求-响应周期吗?

java - 编写静态 void 方法 - "cannot find symbol"编译错误

java - 局部变量是多余的

Java EE : Getting parameters from POST for a login form

jsp - 如何使用 XSLT 或 JSP 检索网站的收藏夹图标?