android XML读写

方式一:字符串拼接

StringBuilder sb=new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.append("<root>");
sb.append("<book>aaa</book>");
sb.append("</root>");
File path = new File(Environment.getExternalStorageDirectory().getPath(), "config.xml");
FileOutputStream fos= new FileOutputStream(path);
fos.write(sb.toString().getBytes());
fos.close();

方式二: XmlSerializer

private void XmlSerializerTest() throws IOException {
       // 1.获取XmlSerializer 类的实例,通过xml获取
        XmlSerializer serializer= Xml.newSerializer();
        File file=new File(Environment.getExternalStorageDirectory(),"config.xml");
        FileOutputStream fos=new FileOutputStream(file);
        //读写流的编码格式
        serializer.setOutput(fos,"utf-8");
       // 2.写xml开头,xml 头部的编码格式utf-8
        serializer.startDocument("utf-8",true);
        //3.写节点,命名空间xmlns ,如AndroidManifest里面定义的xmlns
        serializer.startTag(null,"root");//root开始节点

        serializer.startTag(null,"book");//book开始节点
        serializer.text("aaaaaa");
        serializer.endTag(null,"book");//book结束节点

        serializer.endTag(null,"root");//root结束节点
        // xml结束
        serializer.endDocument();
    }

解析XML:xmlPullParser

public void xmlParser(InputStream in) throws Exception {
        //获取XmlPullParser实例
        XmlPullParser xmlPullParser= Xml.newPullParser();
        xmlPullParser.setInput(in,"utf-8");
        //获取事件类型
        int type=xmlPullParser.getEventType();
        while (type!=XmlPullParser.END_DOCUMENT){
          switch (type) {
              case XmlPullParser.START_TAG:
                  //开始标签
                  //获取标签名字
                  xmlPullParser.getName();
                  //获取标签内容
                  xmlPullParser.nextText();
                  //获取属性值
                  xmlPullParser.getAttributeValue(0);
                  break;
              case XmlPullParser.END_TAG:
                  //结束标签
                  break;
          }
            //获取下一个节点
            type=xmlPullParser.nextTag();
        }
    }

猜你喜欢

转载自blog.csdn.net/byc6352/article/details/105322047