如何在通过 SAX Xerces 解析 XML Doc 时引用 XSD Schema 位置?

Posted

技术标签:

【中文标题】如何在通过 SAX Xerces 解析 XML Doc 时引用 XSD Schema 位置?【英文标题】:how to reference XSD Schema location while parsing XML Doc via SAX Xerces? 【发布时间】:2010-10-29 20:07:06 【问题描述】:

如何在通过 SAX Xerces 解析 XML 时引用 XSD 架构位置?

>  
< !--  xsi:noNamespaceSchemaLocation="F:\...\myschema_v2.5.xsd"   

我必须在 XML Doc 中真正引用这个元素吗?我希望不是... -->

我也在Java代码中设置如下,不优雅,而架构位置是固定的(不适合生产) SaxParser.setProperty( "http://java.sun.com/xml/jaxp/properties/schemaSource", “F:...\myschema_v2.5.xsd” );

【问题讨论】:

【参考方案1】:

在您的 jar 中包含架构并通过以下方式使用 getResourceAsStream 加载它

reader.setProperty("http://java.sun.com/xml/jaxp/properties/schemaSource", 
  new InputSource(getClass().getResourceAsStream(xsdLocation)));

【讨论】:

【参考方案2】:

我明白了。

必须如下使用,将“/com/firma/project/.../myschema_v2.5.xsd”作为参数。 不要忘记一开始路径中的 "/"

【讨论】:

以上是关于如何在通过 SAX Xerces 解析 XML Doc 时引用 XSD Schema 位置?的主要内容,如果未能解决你的问题,请参考以下文章

如果输入文件中未指定 DTD,如何强制 SAX 解析器使用 DTD?

XML编程总结——使用SAX接口操作xml

Java XML嵌套的Parser无法正常工作

Android 创建与解析XML—— 概述

Xerces2 XML 解析器和 Xalan XSLT 处理器——状态和替换?

python使用SAX解析xml