2

所有,我正在开发一个我们在 Resin Web 应用服务器中部署的 Java Web 应用。我一直在为应用程序的一个新部分进行一些 XML 解析,并意识到我们的应用程序正在使用Resin 类进行解析。由于多种原因,我想摆脱它并使用更标准的东西,所以我在我的树脂配置文件中设置了这些系统属性(并将 xerces jar 添加到我的类路径中):

<system-property javax.xml.parsers.DocumentBuilderFactory="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/>

<system-property javax.xml.parsers.SAXParserFactory="org.apache.xerces.jaxp.SAXParserFactoryImpl"/>

而且,现在我在几个页面上都遇到了 JSP 编译错误(我猜 Resin 的内置解析器更宽松)。错误内容如下:

org.xml.sax.SAXParseException: The value of attribute "title" associated with an element type "display:column" must not contain the '<' character.

而且,某些页面上的“display:column”标签确实包含“title”属性中的标记。这是一个例子:

<display:column scope='col' class=" appealColorBG  selectAllWidth" 
    title="<span class='centerThis'><label for='selectAll'>Select All</label><br />
            <input type='checkbox' name='selectAll' 
            id='selectAll' 
            onClick='selectAllCheckboxes();'/></span> " >

我知道那是一些丑陋的 JSP 代码,但它也是已经投入生产的代码,所以我犹豫要不要更改它。

有谁知道我可以设置 xerces 以便它允许 JSP 按原样编译的方法?

4

1 回答 1

1

这当然是丑陋的 JSP 代码。

如果您在其上使用 XML 解析器,就会遇到问题。正如 Xerces 告诉您的那样,有效 XML 中的属性值不能包含“<”字符。

您能否告诉 Xerces 接受这一点值得怀疑,但修复 XML 比让 XML 解析器接受不正确的 XML 更好。

您可能希望退回到使用 Resin 类,直到您可以为 Xerces 提供正确的 XML,或者将 Resin 配置为不使用 XML 解析器作为其 JSP 编译的一部分 - 请参阅注释。

于 2010-04-20T00:07:24.960 回答