【问题标题】:JSP compilation error upon changing XML parser to Xerces将 XML 解析器更改为 Xerces 时出现 JSP 编译错误
【发布时间】:2011-02-09 19:28:35
【问题描述】:

所有, 我正在开发一个我们在 Resin Web 应用服务器中部署的 Java Web 应用。我一直在为应用程序的一个新部分进行一些 XML 解析,并意识到我们的应用程序正在使用 Resin classes 进行解析。由于多种原因,我想摆脱它并使用更标准的东西,所以我在我的树脂配置文件中设置了这些系统属性(并将 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 按原样编译的方法吗?

【问题讨论】:

  • 如果 Resin 的默认设置有效,而更改的设置无效,那么为什么要更改它们?
  • resin 默认值适用于 JSP 编译,但我正在尝试解决另一个解析问题,我想为此使用 Xerces 而不是构建不是标准的树脂类。 JSP 编译问题让我措手不及。如果我找不到允许 JSP 也编译的解决方案,我将不得不改回来,就像你说的那样。

标签: xml jsp parsing xerces resin


【解决方案1】:

那肯定是丑陋的 JSP 代码。

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

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

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

【讨论】:

  • 是的,Resin 似乎在编译之前通过解析器运行 JSP——也许这是标准的,但我没有意识到。正如你所说,这可能是不可能的,但这就是我想问的:) 我不能选择更改 JSP,因为这是一个相当大的现有代码库,所以我可能不得不使用 Resin 类。
  • 刚刚浏览了一下 Resin 文档,我怀疑您可以告诉 Resin 不要将 JSP 视为 XML。请查看caucho.com/resin-3.0/config/webapp.xtp#jsp 以获取有关此方面的提示。看起来它应该是默认值。
  • 感谢带有 jsp 配置标签的树脂文档的链接 - 我确实玩过这些,但我仍然总是遇到 JSP 编译错误。看起来我现在必须回到树脂解析器。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 2012-11-23
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
相关资源
最近更新 更多