public interface XmlSerializer
org.xmlpull.v1.XmlSerializer |
定义一个到XML Infoset序列化的接口。 如果序列化的XML是XML 1.0兼容的文本或其他格式的XML 1.0序列化(例如二进制XML,例如使用WBXML),则此接口将被抽象化。
请注意:此接口将成为XmlPull 1.2 API的一部分。 它被包括作为讨论的基础。 它可能以任何方式改变。
可能抛出的异常包括:IOException或运行时异常(可引发更多运行时异常但未声明,因此没有为此接口定义的语义):
注意:在某些实现中可能不支持写入CDSECT,ENTITY_REF,IGNORABLE_WHITESPACE,PROCESSING_INSTRUCTION,COMMENT和DOCDECL(例如,在序列化为WBXML时)。 在这种情况下,IllegalStateException将被抛出,建议使用可选功能来表示实现不支持这种输出。
Public methods |
|
---|---|
abstract XmlSerializer |
attribute(String namespace, String name, String value) 写一个属性。 |
abstract void |
cdsect(String text) |
abstract void |
comment(String text) |
abstract void |
docdecl(String text) |
abstract void |
endDocument() 完成写作。 |
abstract XmlSerializer |
endTag(String namespace, String name) 写结束标签。 |
abstract void |
entityRef(String text) |
abstract void |
flush() 将所有待处理的输出写入流中。 |
abstract int |
getDepth() 返回元素的当前深度。 |
abstract boolean |
getFeature(String name) 用给定名称返回该功能的当前值。 |
abstract String |
getName() 返回由startTag()设置的当前元素的名称。 |
abstract String |
getNamespace() 返回由startTag()设置的当前元素的名称空间URI。 |
abstract String |
getPrefix(String namespace, boolean generatePrefix) 返回与给定前缀对应的名称空间如果没有绑定到此名称空间的前缀返回null,但如果generatePrefix为false,则返回生成的前缀。 |
abstract Object |
getProperty(String name) 查找一个属性的值。 |
abstract void |
ignorableWhitespace(String text) |
abstract void |
processingInstruction(String text) |
abstract void |
setFeature(String name, boolean state) 设置按名称标识的功能(建议为唯一性的URI)。 |
abstract void |
setOutput(OutputStream os, String encoding) 设置为使用给定编码的二进制输出流。 |
abstract void |
setOutput(Writer writer) 将输出设置为给定的作者。 |
abstract void |
setPrefix(String prefix, String namespace) 将给定的前缀绑定到给定的名称空间。 |
abstract void |
setProperty(String name, Object value) 设置属性的值。 |
abstract void |
startDocument(String encoding, Boolean standalone) 用编码写入<?xml声明(如果编码不为空)和独立标志(如果独立不为null)这个方法只能在setOutput之后调用。 |
abstract XmlSerializer |
startTag(String namespace, String name) 用给定的名称空间和名称写入开始标记。 |
abstract XmlSerializer |
text(char[] buf, int start, int len) 写入文本,其中自动转义特殊的XML字符 |
abstract XmlSerializer |
text(String text) 写入文本,其中自动转义特殊的XML字符 |
XmlSerializer attribute (String namespace, String name, String value)
写一个属性。 调用attribute()必须立即调用startTag()。 如果没有为给定名称空间定义前缀,则会自动定义前缀。 如果名称空间为空或空字符串,则不会打印名称空间前缀,而只是名称。
Parameters | |
---|---|
namespace |
String
|
name |
String
|
value |
String
|
Returns | |
---|---|
XmlSerializer |
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |
void cdsect (String text)
Parameters | |
---|---|
text |
String
|
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |
void comment (String text)
Parameters | |
---|---|
text |
String
|
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |
void docdecl (String text)
Parameters | |
---|---|
text |
String
|
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |
void endDocument ()
完成写作。 所有未封闭的开始标签将被关闭并且输出将被刷新。 调用此方法后,不会再有更多的输出可以被序列化,直到下次调用setOutput()
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |
XmlSerializer endTag (String namespace, String name)
写结束标签。 命名空间和名称的重复只是为了避免错误。
背景:在kXML中,endTag没有参数,非匹配标签很难找到......如果名称空间为空,则不会打印名称空间前缀,而只是名称。 如果名称空间为空字符串,则序列化程序将确保声明默认的空名称空间(在XML 1.0 xmlns =''中)。
Parameters | |
---|---|
namespace |
String
|
name |
String
|
Returns | |
---|---|
XmlSerializer |
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |
void entityRef (String text)
Parameters | |
---|---|
text |
String
|
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |
void flush ()
将所有待处理的输出写入流中。 如果调用方法startTag()或attribute(),则在底层输出流上调用flush()之前,关闭start标记(final>)。
注意:如果需要关闭开始标记(因此不允许更多的attribute()调用),但不用用空字符串(text(“”))清空输出调用方法text()。
Throws | |
---|---|
IOException |
int getDepth ()
返回元素的当前深度。 在根元素之外,深度为0.调用startTag()时,深度加1。 在观察到对endTag()事件的调用后,深度递减。
<!-- outside --> 0 <root> 1 sometext 1 <foobar> 2 </foobar> 2 </root> 1 <!-- outside --> 0
Returns | |
---|---|
int |
boolean getFeature (String name)
用给定名称返回该功能的当前值。
注:未知属性 始终返回为空
Parameters | |
---|---|
name |
String : The name of feature to be retrieved. |
Returns | |
---|---|
boolean |
The value of named feature. |
Throws | |
---|---|
IllegalArgumentException |
if feature string is null |
String getName ()
返回由startTag()设置的当前元素的名称。 它只能在第一次调用startTag()或第一次调用startTag()时调用lastTag()之前为null。
Returns | |
---|---|
String |
namespace set by startTag() that is currently in scope |
String getNamespace ()
返回由startTag()设置的当前元素的名称空间URI。
注意:这意味着:
Returns | |
---|---|
String |
namespace set by startTag() that is currently in scope |
String getPrefix (String namespace, boolean generatePrefix)
返回与给定前缀对应的名称空间如果没有绑定到此名称空间的前缀返回null,但如果generatePrefix为false,则返回生成的前缀。
注:如果前缀为空字符串“”,并且默认命名空间与此前缀绑定,则返回空字符串(“”)。
注意:前缀“xml”和“xmlns”已经绑定将具有定义的值 Namespaces in XML specification
Parameters | |
---|---|
namespace |
String
|
generatePrefix |
boolean
|
Returns | |
---|---|
String |
Throws | |
---|---|
IllegalArgumentException |
Object getProperty (String name)
查找一个属性的值。 属性名称是任何完全限定的URI。 一世
注:未知属性是
Parameters | |
---|---|
name |
String : The name of property to be retrieved. |
Returns | |
---|---|
Object |
The value of named property. |
void ignorableWhitespace (String text)
Parameters | |
---|---|
text |
String
|
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |
void processingInstruction (String text)
Parameters | |
---|---|
text |
String
|
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |
void setFeature (String name, boolean state)
设置按名称标识的功能(建议为唯一性的URI)。 一些众所周知的可选功能在http://www.xmlpull.org/v1/doc/features.html中定义。 如果功能未被识别或无法设置,则必须抛出IllegalStateException。
Parameters | |
---|---|
name |
String
|
state |
boolean
|
Throws | |
---|---|
IllegalStateException |
If the feature is not supported or can not be set |
IllegalArgumentException |
void setOutput (OutputStream os, String encoding)
设置为使用给定编码的二进制输出流。
Parameters | |
---|---|
os |
OutputStream
|
encoding |
String
|
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |
void setOutput (Writer writer)
将输出设置为给定的作者。
警告没有关于编码的信息!
Parameters | |
---|---|
writer |
Writer
|
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |
void setPrefix (String prefix, String namespace)
将给定的前缀绑定到给定的名称空间。 此调用对包含子元素的下一个元素有效。 即使元素(startTag()或attribute())中没有使用前缀,也必须始终声明前缀和名称空间 - 对于XML 1.0,它必须导致声明xmlns:prefix='namespace'
(或xmlns:prefix="namespace"
取决于用于引用属性值的字符)。
注意:这个方法必须在startTag()之前直接调用,如果接下来调用了startTag()或setPrefix(),那么将会有异常。
注:前缀“xml”和“xmlns”已绑定,不能重新定义,请参阅: Namespaces in XML Errata 。
注意:将默认命名空间设置为前缀空字符串。
Parameters | |
---|---|
prefix |
String : must be not null (or IllegalArgumentException is thrown) |
namespace |
String : must be not null |
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |
void setProperty (String name, Object value)
设置属性的值。 (为了唯一性,建议使用URI的属性名称)。 一些众所周知的可选属性在http://www.xmlpull.org/v1/doc/properties.html中定义。 如果属性不被识别或者不能被设置,那么IllegalStateException必须被抛出。
Parameters | |
---|---|
name |
String
|
value |
Object
|
Throws | |
---|---|
IllegalStateException |
if the property is not supported or can not be set |
IllegalArgumentException |
void startDocument (String encoding, Boolean standalone)
用编码写入<?xml声明(如果编码不为空)和独立标志(如果独立不为null)这个方法只能在setOutput之后调用。
Parameters | |
---|---|
encoding |
String
|
standalone |
Boolean
|
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |
XmlSerializer startTag (String namespace, String name)
用给定的名称空间和名称写入开始标记。 如果没有为给定名称空间定义前缀,则会自动定义前缀。 命名空间的显式前缀可以通过在此方法之前立即调用setPrefix()来建立。 如果名称空间为空,则不会打印名称空间前缀,而只是名称。 如果名称空间为空字符串,则序列化程序将确保声明默认的空名称空间(在XML 1.0 xmlns =''中),或者如果默认名称空间已经绑定到非空字符串,则会抛出IllegalStateException。
Parameters | |
---|---|
namespace |
String
|
name |
String
|
Returns | |
---|---|
XmlSerializer |
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |
XmlSerializer text (char[] buf, int start, int len)
写入文本,其中自动转义特殊的XML字符
Parameters | |
---|---|
buf |
char
|
start |
int
|
len |
int
|
Returns | |
---|---|
XmlSerializer |
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |
XmlSerializer text (String text)
写入文本,其中自动转义特殊的XML字符
Parameters | |
---|---|
text |
String
|
Returns | |
---|---|
XmlSerializer |
Throws | |
---|---|
IOException |
|
IllegalArgumentException |
|
IllegalStateException |