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);    }}


更多相关文章

  1. Android将camera获取到的YuvData在jni中转化为Mat方法
  2. 【生命周期】Android中Activity的生命周期
  3. androd 事件分发机制的初步理解
  4. Android(安卓)Activity中启动另一应用程序的方法,无需得到类名
  5. Android(安卓)异步加载——AsyncTask详谈
  6. Android(安卓)Service解析
  7. android 开发零起步学习笔记(十一):界面切换+几种常用界面切换效果
  8. Android(安卓)Context
  9. Android带进度条的文件上传,使用AsyncTask异步任务

随机推荐

  1. Android之广播大全 Intent Action 事件
  2. 一步一步学android之布局管理器——Relat
  3. 关于安卓中 WindowManager.LayoutParams(
  4. unity3d发布Android程序
  5. Cocos2d-x 新版本中android震动
  6. Android中,单位dp、sp、px互相转换工具类
  7. Android(安卓)仿微信朋友圈发动态功能(相
  8. android源码分析流程-init.c
  9. Android(安卓)Studio3.0升级gradle遇到的
  10. Android更新完ADT后遇到的问题