- 自从:
- 1.4
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract boolean
getFeature
(String name) 返回底层实现org.xml.sax.XMLReader中请求的特定属性。通过setSchema(Schema schema)
方法获取指定的Schema
对象。boolean
指示工厂是否配置为生成具有命名空间感知的解析器。boolean
指示工厂是否配置为在解析期间验证XML内容的解析器。boolean
获取XInclude处理的状态。static SAXParserFactory
创建一个SAXParserFactory
内置系统默认实现的新实例。static SAXParserFactory
创建一个具有命名空间感知的SAXParserFactory
内置系统默认实现的新实例。static SAXParserFactory
获取一个SAXParserFactory
的新实例。static SAXParserFactory
newInstance
(String factoryClassName, ClassLoader classLoader) 从类名获取一个SAXParserFactory
的新实例。static SAXParserFactory
创建一个具有命名空间感知的SAXParserFactory
的新实例。static SAXParserFactory
newNSInstance
(String factoryClassName, ClassLoader classLoader) 从类名创建一个具有命名空间感知的SAXParserFactory
的新实例。abstract SAXParser
使用当前配置的工厂参数创建一个新的SAXParser实例。abstract void
setFeature
(String name, boolean value) 在org.xml.sax.XMLReader的底层实现中设置特定的功能。void
setNamespaceAware
(boolean awareness) 指定此代码生成的解析器将提供对XML命名空间的支持。void
设置用于从此工厂创建的解析器使用的Schema
。void
setValidating
(boolean validating) 指定此代码生成的解析器将在解析期间验证文档。void
setXIncludeAware
(boolean state) 设置XInclude处理的状态。
-
Constructor Details
-
SAXParserFactory
protected SAXParserFactory()受保护的构造函数,强制使用newInstance()
。
-
-
Method Details
-
newDefaultNSInstance
创建一个具有命名空间感知的SAXParserFactory
内置系统默认实现的新实例。工厂实例生成的解析器默认提供对XML命名空间的支持。- 实现要求:
-
除了使用与
newDefaultInstance()
相同的过程创建工厂实例外,此方法必须将NamespaceAware设置为true。 - 返回:
-
SAXParserFactory
内置系统默认实现的新实例。 - 自从:
- 13
-
newNSInstance
创建一个具有命名空间感知的SAXParserFactory
的新实例。工厂实例生成的解析器默认提供对XML命名空间的支持。- 实现要求:
-
除了使用与
newInstance()
相同的过程创建工厂实例外,此方法必须将NamespaceAware设置为true。 - 返回:
-
SAXParserFactory
的新实例 - 抛出:
-
FactoryConfigurationError
- 如果存在服务配置错误,或者实现不可用或无法实例化。 - 自从:
- 13
-
newNSInstance
创建一个具有命名空间感知的SAXParserFactory
的新实例。工厂实例生成的解析器默认提供对XML命名空间的支持。- 实现要求:
-
除了使用与
newInstance(java.lang.String, java.lang.ClassLoader)
相同的过程创建工厂实例外,此方法必须将NamespaceAware设置为true。 - 参数:
-
factoryClassName
- 提供javax.xml.parsers.SAXParserFactory
实现的完全限定的工厂类名。 -
classLoader
- 用于加载工厂类的ClassLoader
。如果为null
,则使用当前Thread
的上下文类加载器来加载工厂类。 - 返回:
-
SAXParserFactory
的新实例 - 抛出:
-
FactoryConfigurationError
- 如果factoryClassName
为null
,或者无法加载、实例化工厂类。 - 自从:
- 13
-
newDefaultInstance
创建一个SAXParserFactory
内置系统默认实现的新实例。- 返回:
-
SAXParserFactory
内置系统默认实现的新实例。 - 自从:
- 9
-
newInstance
获取一个SAXParserFactory
的新实例。此方法使用JAXP查找机制来确定要加载的SAXParserFactory
实现类。一旦应用程序获得了对
SAXParserFactory
的引用,就可以使用工厂来配置和获取解析器实例。故障排除提示
设置
jaxp.debug
系统属性将导致此方法向System.err
打印大量关于其操作和查找位置的调试消息。如果加载
SAXParser
时遇到问题,请尝试:java -Djaxp.debug=1 YourProgram ....
- 返回:
-
一个
SAXParserFactory
的新实例。 - 抛出:
-
FactoryConfigurationError
- 如果存在服务配置错误,或者实现不可用或无法实例化。
-
newInstance
从类名获取一个SAXParserFactory
的新实例。当类路径中存在多个提供程序时,此函数很有用。它为应用程序提供更多控制,因为可以指定应加载哪个提供程序。一旦应用程序获得了对
SAXParserFactory
的引用,就可以使用工厂来配置和获取解析器实例。故障排除提示
设置
jaxp.debug
系统属性将导致此方法向System.err
打印大量关于其操作和查找位置的调试消息。如果遇到问题,请尝试:
java -Djaxp.debug=1 YourProgram ....
- 参数:
-
factoryClassName
- 提供javax.xml.parsers.SAXParserFactory
实现的完全限定的工厂类名。 -
classLoader
- 用于加载工厂类的ClassLoader
。如果null
,则使用当前Thread
的上下文类加载器来加载工厂类。 - 返回:
-
SAXParserFactory
的新实例 - 抛出:
-
FactoryConfigurationError
- 如果factoryClassName
为null
,或者无法加载、实例化工厂类。 - 自从:
- 1.6
- 参见:
-
newSAXParser
使用当前配置的工厂参数创建一个新的SAXParser实例。- 返回:
- 一个新的SAXParser实例。
- 抛出:
-
ParserConfigurationException
- 如果无法创建满足请求配置的解析器。 -
SAXException
- 用于SAX错误。
-
setNamespaceAware
public void setNamespaceAware(boolean awareness) 指定此代码生成的解析器将提供对XML命名空间的支持。默认情况下,此值设置为false
。- 参数:
-
awareness
- 如果此代码生成的解析器将提供对XML命名空间的支持,则为true;否则为false。
-
setValidating
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。
-
isNamespaceAware
public boolean isNamespaceAware()指示工厂是否配置为生成具有命名空间感知的解析器。- 返回:
- 如果工厂配置为生成具有命名空间感知的解析器,则为true;否则为false。
-
isValidating
public boolean isValidating()指示工厂是否配置为生成在解析期间验证XML内容的解析器。- 返回:
- 如果工厂配置为生成在解析期间验证XML内容的解析器,则为true;否则为false。
-
setFeature
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 Schema构造。如果出于安全原因限制XML处理,将通过调用注册的ErrorHandler.fatalError(SAXParseException exception)
来报告。请参阅SAXParser
parse
方法以获取处理程序规范。- 当功能为
false
时,实现将根据XML规范处理XML,而不考虑可能的实现限制。
- 参数:
-
name
- 要设置的功能的名称。 -
value
- 要设置的功能的值。 - 抛出:
-
ParserConfigurationException
- 如果无法创建满足请求配置的解析器。 -
SAXNotRecognizedException
- 当底层XMLReader不识别属性名称时。 -
SAXNotSupportedException
- 当底层XMLReader识别属性名称但不支持该属性时。 -
NullPointerException
- 如果name
参数为null。 - 参见:
-
getFeature
public abstract boolean getFeature(String name) throws ParserConfigurationException, SAXNotRecognizedException, SAXNotSupportedException 返回org.xml.sax.XMLReader底层实现中请求的特定属性。- 参数:
-
name
- 要检索的属性的名称。 - 返回:
- 请求属性的值。
- 抛出:
-
ParserConfigurationException
- 如果无法创建满足请求配置的解析器。 -
SAXNotRecognizedException
- 当底层XMLReader不识别属性名称时。 -
SAXNotSupportedException
- 当底层XMLReader识别属性名称但不支持该属性时。 - 参见:
-
getSchema
通过setSchema(Schema schema)
方法指定的Schema
对象。- 返回:
-
通过
setSchema(Schema)
方法最后设置的Schema
对象,如果自创建SAXParserFactory
以来未调用该方法,则返回null。 - 抛出:
-
UnsupportedOperationException
- 当实现未覆盖此方法时 - 自1.5起:
- 1.5
-
setSchema
设置从此工厂创建的解析器要使用的Schema
。当
Schema
为非null时,解析器将使用从中创建的验证器对文档进行验证,然后将信息传递给应用程序。当验证器发现警告/错误/致命错误时,解析器必须处理它们,就好像这些错误是解析器本身发现的一样。换句话说,如果设置了用户指定的
ErrorHandler
,它必须接收这些错误,如果没有,则必须根据实现特定的默认错误处理规则处理它们。验证器可能修改SAX事件流(例如通过添加文档中缺失的默认值),解析器负责确保应用程序将接收到这些修改后的事件流。
最初,将
null
设置为Schema
。即使
isValidating()
方法返回false
,此处理也会生效。在使用非null的
Schema
对象时,使用http://java.sun.com/xml/jaxp/properties/schemaSource
属性和/或http://java.sun.com/xml/jaxp/properties/schemaLanguage
属性是错误的。这样的配置将在SAXParser
上设置这些属性时引发SAXException
异常。实现者注意事项
解析器必须能够与任何
Schema
实现一起工作。但是,解析器和模式允许使用特定于实现的自定义机制,只要它们产生规范中描述的结果即可。- 参数:
-
schema
- 要使用的Schema
,null
表示移除模式。 - 抛出:
-
UnsupportedOperationException
- 当实现未覆盖此方法时 - 自1.5起:
- 1.5
-
setXIncludeAware
public void setXIncludeAware(boolean state) 设置XInclude处理的状态。如果在文档实例中找到XInclude标记,是否应按照XML Inclusions (XInclude) Version 1.0中指定的方式处理它。
XInclude处理默认为
false
。- 参数:
-
state
- 将XInclude处理设置为true
或false
- 抛出:
-
UnsupportedOperationException
- 当实现未覆盖此方法时 - 自1.5起:
- 1.5
-
isXIncludeAware
public boolean isXIncludeAware()获取XInclude处理的状态。- 返回:
- XInclude处理的当前状态
- 抛出:
-
UnsupportedOperationException
- 当实现未覆盖此方法时 - 自1.5起:
- 1.5
-