- java.lang.Object
-
- javax.xml.parsers.SAXParserFactory
-
public abstract class SAXParserFactory extends Object
定义工厂API,使应用程序能够配置和获取基于SAX的解析器来解析XML文档。- 从以下版本开始:
- 1.4
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
SAXParserFactory()
受保护的构造函数强制使用newInstance()
。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 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
newDefaultInstance()
创建一个SAXParserFactory
内置系统默认实现的新实例。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处理的状态。
-
-
-
构造方法详细信息
-
SAXParserFactory
protected SAXParserFactory()
受保护的构造函数强制使用newInstance()
。
-
-
方法详细信息
-
newDefaultInstance
public static SAXParserFactory newDefaultInstance()
创建一个SAXParserFactory
内置系统默认实现的新实例。- 结果
-
SAXParserFactory
内建系统默认实现的新实例。 - 从以下版本开始:
- 9
-
newInstance
public static SAXParserFactory newInstance()
获取SAXParserFactory
的新实例。 此静态方法创建新的工厂实例此方法使用以下有序查找过程来确定要加载的SAXParserFactory
实现类:- 使用
javax.xml.parsers.SAXParserFactory
系统属性。 使用配置文件“jaxp.properties”。 该文件采用标准
Properties
格式,通常位于Java安装的conf
目录中。 它包含实现类的完全限定名称,其中键是上面定义的系统属性。jaxp.properties文件由JAXP实现只读一次,然后将其值缓存以备将来使用。 如果文件第一次尝试读取文件不存在,则不再进一步检查其存在。 在第一次读取jaxp.properties之后,无法更改任何属性的值。
使用由
ServiceLoader
类定义的服务提供商加载工具尝试使用default loading mechanism来定位和加载服务的实现 :服务提供商加载工具将使用current thread's context class loader尝试加载服务。 如果上下文类加载器为空,则将使用system class loader 。否则返回system-default的实现。
一旦应用程序获得了对
SAXParserFactory
的引用,它可以使用工厂来配置和获取解析器实例。提示进行故障排除
设置
jaxp.debug
系统属性将导致此方法打印大量调试消息到System.err
有关它在做什么和它在哪里看。如果您在加载
SAXParser
s时遇到问题,请尝试:java -Djaxp.debug=1 YourProgram ....
- 结果
- SAXParserFactory的新实例。
- 异常
-
FactoryConfigurationError
-在以下情况下service configuration error或者如果实现不可用或不能被实例化。
- 使用
-
newInstance
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
的上下文classLoader用于加载工厂类。 - 结果
-
新实例
SAXParserFactory
- 异常
-
FactoryConfigurationError
- 如果factoryClassName
是null
,或者工厂类无法加载,实例化。 - 从以下版本开始:
- 1.6
- 另请参见:
-
newInstance()
-
newSAXParser
public abstract SAXParser newSAXParser() throws ParserConfigurationException, SAXException
使用当前配置的工厂参数创建SAXParser的新实例。- 结果
- SAXParser的一个新实例。
- 异常
-
ParserConfigurationException
- 如果无法创建满足请求配置的解析器。 -
SAXException
- 针对SAX错误。
-
setNamespaceAware
public void setNamespaceAware(boolean awareness)
指定此代码生成的解析器将为XML命名空间提供支持。 默认值为false
。- 参数
-
awareness
- 如果此代码生成的解析器将为XML命名空间提供支持,awareness
true; 否则为假。
-
setValidating
public void setValidating(boolean validating)
指定此代码生成的解析器将在文档解析时验证文档。 默认值为false
。请注意,这里的“验证”是指XML推荐中定义的a validating parser 。 换句话说,它基本上只是控制DTD验证。 (JAXP 1.2中定义的遗留的两个属性除外)
要使用现代模式语言(如W3C XML Schema或RELAX NG而不是DTD),您可以通过离开
setValidating(boolean)
方法false
将您的解析器配置为非验证解析器,然后使用setSchema(Schema)
方法将模式与解析器相关联。- 参数
-
validating
- 如果此代码生成的解析器将在解析文档时验证文本,validating
true; 否则为假。
-
isNamespaceAware
public boolean isNamespaceAware()
指示工厂是否配置为生成名称空间感知的解析器。- 结果
- 如果工厂配置为生成名称空间感知的解析器,则为true; 否则为假。
-
isValidating
public boolean isValidating()
指示工厂是否配置为生成在解析期间验证XML内容的解析器。- 结果
- 如果工厂配置为生成在解析期间验证XML内容的解析器,则为true; 否则为假。
-
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模式构造。 如果XML处理由于安全原因而受到限制,则通过对已注册的ErrorHandler.fatalError(SAXParseException exception)
的呼叫进行报告。 请参阅SAXParser
parse
处理程序规范的方法。 - 当功能是
false
,实现将根据XML规范处理XML,而不考虑可能的实现限制。
- 参数
-
name
- 要设置的功能的名称。 -
value
- 要设置的要素的值。 - 异常
-
ParserConfigurationException
- 如果无法创建满足请求的配置的解析器。 -
SAXNotRecognizedException
- 底层XMLReader无法识别属性名称时。 -
SAXNotSupportedException
- 底层XMLReader识别属性名称但不支持该属性时。 -
NullPointerException
- 如果name
参数为空。 - 另请参见:
-
XMLReader.setFeature(java.lang.String, boolean)
-
-
getFeature
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)
-
getSchema
public Schema getSchema()
获取通过setSchema(Schema schema)
方法指定的Schema
对象。- 结果
-
最后通过
setSchema(Schema)
方法设置的Schema
对象,如果自创建SAXParserFactory
以来未调用该方法, 则为 null。 - 异常
-
UnsupportedOperationException
- 当实现不覆盖此方法时 - 从以下版本开始:
- 1.5
-
setSchema
public void setSchema(Schema schema)
将Schema
设置为由此工厂创建的解析器使用。当
Schema
为非空值时,解析器将使用从其创建的验证器在将信息传递到应用程序之前验证文档。当验证器发现警告/错误/致命错误时,解析器必须处理它们,就像解析器本身发现这些错误一样。 换句话说,如果设置了用户指定的
ErrorHandler
,它必须收到这些错误,如果不是,则必须根据实现的特定默认错误处理规则进行处理。验证器可以修改SAX事件流(例如通过添加在文档中缺少的默认值),并且解析器负责确保应用程序将接收到修改的事件流。
最初,
null
被设置为Schema
。即使
isValidating()
方法返回false
此处理也将生效。将
http://java.sun.com/xml/jaxp/properties/schemaSource
属性和/或http://java.sun.com/xml/jaxp/properties/schemaLanguage
属性与非空Schema
对象结合使用是一个错误。 当这些属性在SAXParser
上设置时,此类配置将导致SAXException
异常。实施者注意事项
解析器必须能够使用任何
Schema
实现。 但是,解析器和模式允许使用实现特定的定制机制,只要它们产生规范中描述的结果即可。- 参数
-
schema
-Schema
要使用,null
删除一个模式。 - 异常
-
UnsupportedOperationException
- 实现时不覆盖此方法 - 从以下版本开始:
- 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
-
isXIncludeAware
public boolean isXIncludeAware()
获取XInclude处理的状态。- 结果
- XInclude处理的当前状态
- 异常
-
UnsupportedOperationException
- 实现时不覆盖此方法 - 从以下版本开始:
- 1.5
-
-