| 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjavax.xml.parsers.SAXParserFactory
public abstract class SAXParserFactory
定义工厂 API,使应用程序能够配置和获取基于 SAX 的解析器以解析 XML 文档。
| 构造方法摘要 | |
|---|---|
| protected  | SAXParserFactory()受保护构造方法,以强制使用 newInstance()。 | 
| 方法摘要 | |
|---|---|
| abstract  boolean | getFeature(String name)返回 org.xml.sax.XMLReader 的底层实现中请求的特定属性。 | 
|  Schema | getSchema()获取通过 setSchema(Schema schema)方法指定的Schema对象。 | 
|  boolean | isNamespaceAware()指示是否将工厂配置为生成具有感知名称空间功能的解析器。 | 
|  boolean | isValidating()指示是否将工厂配置为生成解析器,该解析器在解析时验证 XML 内容。 | 
|  boolean | isXIncludeAware()获取 XInclude 处理的状态。 | 
| static SAXParserFactory | newInstance()获取 SAXParserFactory的一个新实例。 | 
| static SAXParserFactory | newInstance(String factoryClassName,
            ClassLoader classLoader)从类名称中获取新的 SAXParserFactory实例。 | 
| abstract  SAXParser | newSAXParser()使用当前配置的工厂参数创建 SAXParser 的一个新实例。 | 
| abstract  void | setFeature(String name,
           boolean value)在 org.xml.sax.XMLReader 的底层实现中设置特定的功能。 | 
|  void | setNamespaceAware(boolean awareness)指定由此代码生成的解析器将提供对 XML 名称空间的支持。 | 
|  void | setSchema(Schema schema)设置将由解析器使用的 Schema,该解析器从此工厂创建。 | 
|  void | setValidating(boolean validating)指定由此代码生成的解析器将验证被解析的文档。 | 
|  void | setXIncludeAware(boolean state)设置 XInclude 处理的状态。 | 
| 从类 java.lang.Object 继承的方法 | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| 构造方法详细信息 | 
|---|
protected SAXParserFactory()
受保护构造方法,以强制使用 newInstance()。
| 方法详细信息 | 
|---|
public static SAXParserFactory newInstance()
SAXParserFactory 的一个新实例。此静态方法创建一个新的工厂实例,此方法按照以下查找过程顺序来确定要加载的 SAXParserFactory 实例类:
 javax.xml.parsers.SAXParserFactory 系统属性。
 java.util.Properties 且包含实现类的完全限定名,其中实现类的键是上述定义的系统属性。
 
JAXP 实现只读取一次 jaxp.properties 文件,然后缓存其值供以后使用。如果首次尝试读取文件时,文件不存在,则不会再次尝试检查该文件是否存在。首次读取 jaxp.properties 后,其中的属性值不能再更改。
 META-INF/services/javax.xml.parsers.SAXParserFactory 文件中的类名。
 SAXParserFactory 实例。
 SAXParserFactory 的引用后,它可以使用工厂来配置和获取解析器实例。
   
设置 jaxp.debug 系统属性将导致此方法将许多调试消息打印到 System.err,以说明其执行的操作以及在何处查找。
如果加载 DocumentBuilder 有问题,请尝试:
java -Djaxp.debug=1 YourProgram ....
FactoryConfigurationError - 如果该实现不可用,或者无法被实例化。
public static SAXParserFactory newInstance(String factoryClassName,
                                           ClassLoader classLoader)
从类名称中获取新的 SAXParserFactory 实例。此函数在类路径中有多个提供者时很有用。它可以对应用程序提供更多的控制,因为它可以指定应该加载哪个提供者。
在应用程序获取对 SAXParserFactory 的引用后,它可以使用工厂来配置和获取解析器实例。
设置 jaxp.debug 系统属性将导致此方法将许多调试消息打印到 System.err,这些消息说明了正在执行的操作以及何处可以找到它。
如有问题,可尝试使用以下代码:
java -Djaxp.debug=1 YourProgram ....
factoryClassName - 提供 javax.xml.parsers.SAXParserFactory 的实现的完全限定工厂类名称。classLoader - 用来加载工厂类的 ClassLoader。如果该参数为 null,则使用当前 Thread 的上下文类加载器来加载工厂类。
SAXParserFactory 实例
FactoryConfigurationError - 如果 factoryClassName 为 null,或者无法加载和实例化工厂类。newInstance()
public abstract SAXParser newSAXParser()
                                throws ParserConfigurationException,
                                       SAXException
使用当前配置的工厂参数创建 SAXParser 的一个新实例。
ParserConfigurationException - 如果无法创建满足所请求配置的解析器,将抛出该异常。
SAXException - 用于 SAX 错误。public void setNamespaceAware(boolean awareness)
false。
awareness - 如果由此代码生成的解析器将提供对 XML 名称空间的支持,则为 true;否则为 false。public void setValidating(boolean validating)
false。
 
 注意,此处“验证”是指 XML 规范中定义的验证解析器。换句话说,它实际上仅控制 DTD 验证。(JAXP 1.2 中定义的两个遗留属性除外。)
要使用现代模式语言(如 W3C XML Schema 或 RELAX NG)而不使用 DTD,您可以将解析器配置为非验证解析器,方法是将 setValidating(boolean) 方法保留为 false,然后使用 setSchema(Schema) 方法将一个模式与解析器关联。
 
validating - 如果由此代码生成的解析器在解析文档时验证文档,则为 true;否则为 false。public boolean isNamespaceAware()
public boolean isValidating()
public abstract void setFeature(String name,
                                boolean value)
                         throws ParserConfigurationException,
                                SAXNotRecognizedException,
                                SAXNotSupportedException
在 org.xml.sax.XMLReader 的底层实现中设置特定的功能。核心功能和属性列表可以在 http://www.saxproject.org/ 中找到。
所有实现必须支持 XMLConstants.FEATURE_SECURE_PROCESSING 功能。当功能为以下情况时:
true:该实现将限制 XML 处理遵守实现限制。示例包括实体扩展限制和将使用大量资源的 XML 模式构造。如果出于安全原因限制 XML 处理,将通过调用注册的 ErrorHandler.fatalError(SAXParseException exception) 进行报告。请参见处理程序规范的 SAXParser parse 方法。
   false 时,该实现将根据 XML 规范处理 XML,而无需考虑可能的实现限制。
   
name - 要设置的功能的名称。value - 要设置的功能值。
ParserConfigurationException - 如果无法创建满足所请求配置的解析器。
SAXNotRecognizedException - 当底层 XMLReader 不能识别属性名称时。
SAXNotSupportedException - 当底层 XMLReader 可以识别属性名称,但不支持该属性时。
NullPointerException - 如果 name 参数为 null。XMLReader.setFeature(java.lang.String, boolean)
public abstract boolean getFeature(String name)
                            throws ParserConfigurationException,
                                   SAXNotRecognizedException,
                                   SAXNotSupportedException
返回 org.xml.sax.XMLReader 的底层实现中请求的特定属性。
name - 要检索的属性的名称。
ParserConfigurationException - 如果无法创建满足所请求配置的解析器,将抛出该异常。
SAXNotRecognizedException - 当底层 XMLReader 不能识别属性名称时。
SAXNotSupportedException - 当底层 XMLReader 可以识别属性名称,但不支持该属性时。XMLReader.getProperty(java.lang.String)public Schema getSchema()
setSchema(Schema schema) 方法指定的 Schema 对象。
setSchema(Schema) 方法设置的 Schema 对象,如果该方法由于创建了 SAXParserFactory 而没有被调用,则返回 null。
UnsupportedOperationException - 当该实现没有重写此方法时public void setSchema(Schema schema)
设置将由解析器使用的 Schema,该解析器从此工厂创建。
如果 Schema 为非 null,则在将信息向下传递到应用程序之前,解析器将使用从中创建的验证器来验证文档。
在验证器发现警告/错误/致命错误时,解析器必须处理它们,就好像这些错误是由解析器自己发现的一样。换句话说,如果设置了用户指定的 ErrorHandler,则它必须接收这些错误,否则,必须根据特定于实现的默认错误处理规则来处理它们。
 
验证器可以修改 SAX 事件流(例如,通过添加在文档中缺少的默认值),解析器负责确保应用程序将接收这些修改的事件流。
最初,null 被设置为 Schema。
即使 isValidating() 方法返回 false,此过程也将生效。
 
将 http://java.sun.com/xml/jaxp/properties/schemaSource 属性和/或 http://java.sun.com/xml/jaxp/properties/schemaLanguage 属性与非 null Schema 对象一起使用将发生错误。当在 SAXParser 上设置这些属性时,此类配置将导致 SAXException 异常。
解析器必须能够与任何 Schema 实现一起使用。但是,只要能够产生规范中描述的结果,就允许解析器和模式使用特定于实现的自定义机制。
 
schema - 要使用的 Schema,如果移除一个模式,则为 null。
UnsupportedOperationException - 当该实现没有重写此方法时public void setXIncludeAware(boolean state)
设置 XInclude 处理的状态。
如果在文档实例中发现 XInclude 标记,则应按 XML Inclusions (XInclude) Version 1.0 中指定的方式处理。
XInclude 处理默认为 false。
state - 将 XInclude 处理设置为 true 或 false
UnsupportedOperationException - 当该实现没有重写此方法时public boolean isXIncludeAware()
获取 XInclude 处理的状态。
UnsupportedOperationException - 当实现没有重写此方法时| 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。