<div> JavaScript is disabled on your browser.
Skip navigation links
Java™ Platform
Standard Ed. 8
compact3

Package javax.xml.transform

该软件包定义了用于处理变换指令的通用的接口,并执行从源到结果的转换。

See: 描述

Package javax.xml.transform Description

该软件包定义了用于处理变换指令的通用的接口,并执行从源到结果的转换。这些接口SAX或DOM标准有无依赖性,并努力使尽可能少的假设对于电源和转换结果的细节。它通过定义SourceResult接口。

定义用户的具体类,API定义了基层发现接口专业。这些接口在javax.xml.transform.saxjavax.xml.transform.dom发现,和javax.xml.transform.stream

创建对象

该API允许混凝土TransformerFactory对象从静态函数TransformerFactory.newInstance()创建。

输入和输出规范

这个API中定义了两个接口的对象称为SourceResult。为了将源和结果对象传递给接口,必须使用具体的类。三具体表现为每个对象定义:StreamSourceStreamResultSAXSourceSAXResult,和DOMSourceDOMResult。每个对象定义一个特征字符串(这是我的一个URL的形式),它可以通过TransformerFactory.getFeature(java.lang.String)看看源或结果对象给定类型的支持。例如,测试是否有domsource和StreamResult是支持的,你可以用下面的测试。


TransformerFactory tfactory = TransformerFactory.newInstance();
if (tfactory.getFeature(DOMSource.FEATURE) && tfactory.getFeature(StreamResult.FEATURE)) {
...
}

Qualified Name Representation

Namespaces目前一些有问题的地区在处理XML对象。合格的名字出现在XML标记前缀的名称。但前缀本身不持身份。相反,它是这些内容映射到他们持有的身份。因此,当通过一个合格的名称如“XYZ:foo”中的java程序,必须提供一种手段,Map“XYZ”命名空间。

一个解决办法是创建一个“属性”对象包含命名空间URI,以及前缀、本地名称,但这并不总是最佳的解决方案,如,例如,你想使用独特的字符串在字典对象的钥匙。没有一个字符串表示形式也难以指定命名空间的身份一个XML文档的上下文之外。

为了通过命名空间值变换,例如设置属性或在Transformer对象参数时,该规范定义了一个字符串”属性“对象参数是由两部分组成的字符串,用花括号括起来的命名空间URI({ }),其次是本地名称。如果将有一个空的URI,那么字符串对象只包含本地名称。应用程序可以安全地检查一个非空URI通过测试看看名称的第一个字符是一个“{”字符。

例如,如果一个URI和本地从<< XYZ元素定义了名称:foo xmlns:XYZ =“http:/ / XYZ。foo。COM /亚/巴兹.html”/>,然后合格的名称将是“{ HTTP:/ / XYZ。foo。COM /亚/巴兹HTML } foo”。请注意前缀丢失了。

结果树的序列化

结果树流序列化可以与Transformer.setOutputProperties(java.util.Properties)Transformer.setOutputProperty(java.lang.String, java.lang.String)方法控制。这些属性仅适用于流的结果,他们有没有效果时,其结果是一个DOM或SAX事件流。

那场比赛的XSLT specification for xsl:output attributes可以从OutputKeys类引用字符串。其他字符串可以被指定为。如果变压器不识别输出的关键,一个IllegalArgumentException抛出,除非关键的名字是namespace qualified。输出的密钥名称是命名空间限定的,尽管它们可能会被一些实现忽略,但它们总是被允许的。

如果所有的理想是源于一个结果的简单的身份转换,然后TransformerFactory提供无参数的TransformerFactory.newTransformer()方法。此方法创建一个变压器,有效地将源复制到结果中。这种方法可以用来创建一个DOM或SAX事件创建一个XML或HTML DOM或SAX事件流。

异常和错误报告

转换中的“转换”接口抛出三种特殊的异常。一个TransformerFactoryConfigurationError平行于FactoryConfigurationError,及时引发的transformerfactory配置存在的问题。此错误通常会被当转换工厂类指定“javax. XML。变换。transformerfactory”系统属性不能被发现或实例化。

一个TransformerConfigurationException可能抛出如果因为任何原因,变压器不能创建。一个transformerconfigurationexception可能如果在转换指令语法错误抛出,例如当TransformerFactory.newTransformer(javax.xml.transform.Source)叫做。

TransformerException是一般例外一个转型过程中出现的。变压器异常可能把另一个例外,如果任何的TransformerException.printStackTrace()方法调用它,它会产生一个列表的堆栈转储,从最新的。变压器异常也提供了一个SourceLocator对象表示在源树或变换指令错误发生。TransformerException.getMessageAndLocation()可谓与位置信息得到一个错误信息,并TransformerException.getLocationAsString()可谓得到公正的位置的字符串。

变换的警告和错误发送到ErrorListener,此时应用可能会报告错误或警告,并决定把一个非致命错误的异常。的ErrorListener可能通过设置,都与转换指令语法错误的错误报告TransformerFactory.setErrorListener(javax.xml.transform.ErrorListener),或通过Transformer.setErrorListener(javax.xml.transform.ErrorListener)报告在转型过程中出现的错误。在对象的ErrorListener永远有效,non-null,是否设置的应用程序或由处理器提供的默认实现。由处理器提供的默认实现将所有报告和错误警告System.err不抛出任何异常s。应用强烈鼓励登记和使用ErrorListeners确保适当的行为的警告和错误。

在一个转型的URI解析

该API提供了引用在样式表的指示或在转换中被调用的应用程序URI的方式解决。这可以通过创建一个类实现的URIResolver接口完成,其方法之一,URIResolver.resolve(java.lang.String, java.lang.String),和使用这类设置的转换指令或TransformerFactory.setURIResolver(javax.xml.transform.URIResolver)Transformer.setURIResolver(javax.xml.transform.URIResolver) URI分辨率变换。的URIResolver.resolve方法需要两个字符串参数,发现在样式表的URI指令或内置的转换过程的一部分,和的基URI对第一个参数是绝对需要绝对URI。返回的Source对象必须通过变压器可以使用,在其实现的功能说明。

Skip navigation links
Java™ Platform
Standard Ed. 8

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.

本帮助文档是使用 《百度翻译》翻译,请与英文版配合使用 by--QQ:654638585