博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 解析XML文件和生成XML文件
阅读量:6159 次
发布时间:2019-06-21

本文共 4720 字,大约阅读时间需要 15 分钟。

解析XML文件

public static void initXML(Context context) {        //can't create in /data/media/0 because permission         //can create in /sdcard/hotel        File mSettings = new File(HOTEL_PATH_XML);        if (!mSettings.exists()) {            mSettings.mkdirs();        }        File settings = new File(mSettings,"settings.xml");        Log.i("XmlPullParser-----settings", settings+"+1+");        if (!settings.exists()) {            try {                Log.i("XmlPullParser-----settings", settings+"+2+");                settings.createNewFile();                initSettings(settings);            } catch (IOException e) {                e.printStackTrace();                return;            }            return;        }                try {            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();            factory.setNamespaceAware(true);            XmlPullParser xpp = factory.newPullParser();            xpp.setInput(new FileInputStream(settings), "utf-8");            int eventType = xpp.getEventType();            while (eventType != XmlPullParser.END_DOCUMENT) {                Log.i("XmlPullParser-----TAG", eventType+"");                if (eventType == XmlPullParser.START_TAG) {                    String tag = xpp.getName();                    Log.i("XmlPullParser-----TAG", "tag---------"+tag+"");                    if (tag.equals("item")) {                        String id = xpp.getAttributeValue(null, "id");                        String value = xpp.getAttributeValue(null, "value");                        if (id.equals("server")) {                            sServerAddr = value;                        } else if (id.equals("hotel")) {                            sHid = value;                        } else if (id.equals("room")) {                            sRoomNum = value;                        }                    }                }                eventType = xpp.next();            }            Log.i("XmlPullParser-----TAG", eventType+"exist the xunhuan");        } catch (XmlPullParserException e) {            e.printStackTrace();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }

生成XML文件

//默认是没有换行的 public static void initSettings(final File settings) {        new Thread(new Runnable() {                        @Override            public void run() {                FileOutputStream fos = null;                try {                    fos = new FileOutputStream(settings);                    XmlSerializer serializer = Xml.newSerializer();                    serializer.setOutput(fos, "UTF-8");                    serializer.startDocument("UTF-8", true);                    serializer.startTag(null, "config");                    serializer.startTag(null, "category");                    serializer.attribute(null, "name", "hot");                    // server                    serializer.startTag(null, "item");                    serializer.attribute(null, "id", "server");                    serializer.attribute(null, "value", "");                    serializer.endTag(null, "item");                    // hid                    serializer.startTag(null, "item");                    serializer.attribute(null, "id", "hotel");                    serializer.attribute(null, "value", "");                    serializer.endTag(null, "item");                    // room                    serializer.startTag(null, "item");                    serializer.attribute(null, "id", "room");                    serializer.attribute(null, "value", "");                    serializer.endTag(null, "item");                                        serializer.endTag(null, "category");                    serializer.endTag(null, "config");                    serializer.endDocument();                    serializer.flush();                } catch (FileNotFoundException e) {                    e.printStackTrace();                } catch (IllegalArgumentException e) {                    e.printStackTrace();                } catch (IllegalStateException e) {                    e.printStackTrace();                } catch (IOException e) {                    e.printStackTrace();                } finally {                    if (fos != null) {                        try {                            fos.close();                        } catch (IOException e) {                            e.printStackTrace();                        }                    }                }            }        }).start();    }

 

 

 

生成xml文件的时候如果要出现“<”括号,可以使用脚本把被转成&lt;的<,替换回<  (不要直接使用路径,通过方法获取路径)

sed -i 's/</

前提是sed命令要在这个Android系统中有效

 

转载于:https://www.cnblogs.com/lipeineng/p/5856431.html

你可能感兴趣的文章
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
linux后台运行程序
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>
Oracle中drop user和drop user cascade的区别
查看>>
登记申请汇总
查看>>
Android Jni调用浅述
查看>>
CodeCombat森林关卡Python代码
查看>>
(二)Spring Boot 起步入门(翻译自Spring Boot官方教程文档)1.5.9.RELEASE
查看>>
Shell基础之-正则表达式
查看>>
JavaScript异步之Generator、async、await
查看>>
讲讲吸顶效果与react-sticky
查看>>