android.util.XML介绍
【摘要】
android为我们提供了一系列的和XML操作相关的方法,这些方法都位于类android.util.XML中,主要方法如下
asAttributeSet()方法:
将xml中的内容以加载到一个AttributeSet中,以键值对的形式存储。一般被用于描述某个图...
android为我们提供了一系列的和XML操作相关的方法,这些方法都位于类android.util.XML中,主要方法如下
asAttributeSet()方法:
将xml中的内容以加载到一个AttributeSet中,以键值对的形式存储。一般被用于描述某个图形表现形式。和android:text这种标签的功能一样。
其他的方法也没什么好解释的了。
这里粘贴处XML类的源代码,对于其实现过程就一目了然了
-
/*
-
* Copyright (C) 2007 The Android Open Source Project
-
*
-
* Licensed under the Apache License, Version 2.0 (the "License");
-
* you may not use this file except in compliance with the License.
-
* You may obtain a copy of the License at
-
*
-
* http://www.apache.org/licenses/LICENSE-2.0
-
*
-
* Unless required by applicable law or agreed to in writing, software
-
* distributed under the License is distributed on an "AS IS" BASIS,
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-
* See the License for the specific language governing permissions and
-
* limitations under the License.
-
*/
-
-
package android.util;
-
-
import org.xml.sax.ContentHandler;
-
import org.xml.sax.InputSource;
-
import org.xml.sax.SAXException;
-
import org.xml.sax.XMLReader;
-
import org.xmlpull.v1.XmlPullParser;
-
import org.xmlpull.v1.XmlSerializer;
-
import org.xmlpull.v1.XmlPullParserException;
-
import org.xmlpull.v1.XmlPullParserFactory;
-
-
import java.io.IOException;
-
import java.io.InputStream;
-
import java.io.Reader;
-
import java.io.StringReader;
-
import java.io.UnsupportedEncodingException;
-
-
import org.apache.harmony.xml.ExpatPullParser;
-
import org.apache.harmony.xml.ExpatReader;
-
-
/**
-
* XML utility methods.
-
*/
-
public class Xml {
-
-
/**
-
* {@link org.xmlpull.v1.XmlPullParser} "relaxed" feature name.
-
*
-
* @see <a href="http://xmlpull.org/v1/doc/features.html#relaxed" mce_href="http://xmlpull.org/v1/doc/features.html#relaxed">
-
* specification</a>
-
*/
-
public static String FEATURE_RELAXED = ExpatPullParser.FEATURE_RELAXED;
-
-
/**
-
* Parses the given xml string and fires events on the given SAX handler.
-
*/
-
public static void parse(String xml, ContentHandler contentHandler)
-
throws SAXException {
-
try {
-
XMLReader reader = new ExpatReader();
-
reader.setContentHandler(contentHandler);
-
reader.parse(new InputSource(new StringReader(xml)));
-
}
-
catch (IOException e) {
-
throw new AssertionError(e);
-
}
-
}
-
-
/**
-
* Parses xml from the given reader and fires events on the given SAX
-
* handler.
-
*/
-
public static void parse(Reader in, ContentHandler contentHandler)
-
throws IOException, SAXException {
-
XMLReader reader = new ExpatReader();
-
reader.setContentHandler(contentHandler);
-
reader.parse(new InputSource(in));
-
}
-
-
/**
-
* Parses xml from the given input stream and fires events on the given SAX
-
* handler.
-
*/
-
public static void parse(InputStream in, Encoding encoding,
-
ContentHandler contentHandler) throws IOException, SAXException {
-
try {
-
XMLReader reader = new ExpatReader();
-
reader.setContentHandler(contentHandler);
-
InputSource source = new InputSource(in);
-
source.setEncoding(encoding.expatName);
-
reader.parse(source);
-
} catch (IOException e) {
-
throw new AssertionError(e);
-
}
-
}
-
-
/**
-
* Creates a new pull parser with namespace support.
-
*
-
* <p><b>Note:</b> This is actually slower than the SAX parser, and it's not
-
* fully implemented. If you need a fast, mostly implemented pull parser,
-
* use this. If you need a complete implementation, use KXML.
-
*/
-
public static XmlPullParser newPullParser() {
-
ExpatPullParser parser = new ExpatPullParser();
-
parser.setNamespaceProcessingEnabled(true);
-
return parser;
-
}
-
-
/**
-
* Creates a new xml serializer.
-
*/
-
public static XmlSerializer newSerializer() {
-
try {
-
return XmlSerializerFactory.instance.newSerializer();
-
} catch (XmlPullParserException e) {
-
throw new AssertionError(e);
-
}
-
}
-
-
/** Factory for xml serializers. Initialized on demand. */
-
static class XmlSerializerFactory {
-
static final String TYPE
-
= "org.kxml2.io.KXmlParser,org.kxml2.io.KXmlSerializer";
-
static final XmlPullParserFactory instance;
-
static {
-
try {
-
instance = XmlPullParserFactory.newInstance(TYPE, null);
-
} catch (XmlPullParserException e) {
-
throw new AssertionError(e);
-
}
-
}
-
}
-
-
/**
-
* Supported character encodings.
-
*/
-
public enum Encoding {
-
-
US_ASCII("US-ASCII"),
-
UTF_8("UTF-8"),
-
UTF_16("UTF-16"),
-
ISO_8859_1("ISO-8859-1");
-
-
final String expatName;
-
-
Encoding(String expatName) {
-
this.expatName = expatName;
-
}
-
}
-
-
/**
-
* Finds an encoding by name. Returns UTF-8 if you pass {@code null}.
-
*/
-
public static Encoding findEncodingByName(String encodingName)
-
throws UnsupportedEncodingException {
-
if (encodingName == null) {
-
return Encoding.UTF_8;
-
}
-
-
for (Encoding encoding : Encoding.values()) {
-
if (encoding.expatName.equalsIgnoreCase(encodingName))
-
return encoding;
-
}
-
throw new UnsupportedEncodingException(encodingName);
-
}
-
-
/**
-
* Return an AttributeSet interface for use with the given XmlPullParser.
-
* If the given parser itself implements AttributeSet, that implementation
-
* is simply returned. Otherwise a wrapper class is
-
* instantiated on top of the XmlPullParser, as a proxy for retrieving its
-
* attributes, and returned to you.
-
*
-
* @param parser The existing parser for which you would like an
-
* AttributeSet.
-
*
-
* @return An AttributeSet you can use to retrieve the
-
* attribute values at each of the tags as the parser moves
-
* through its XML document.
-
*
-
* @see AttributeSet
-
*/
-
public static AttributeSet asAttributeSet(XmlPullParser parser) {
-
return (parser instanceof AttributeSet)
-
? (AttributeSet) parser
-
: new XmlPullAttributes(parser);
-
}
-
}
文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。
原文链接:panda1234lee.blog.csdn.net/article/details/8831947
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)