zoukankan      html  css  js  c++  java
  • 使用Pull解析器生成XML文件

    有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中;或者使用DOM API生成XML文件,或者也可以使用pull解析器生成XML文件,这里推荐大家使用Pull解析器。
     
    1、使用Pull解析器生成一个与itcast.xml文件内容相同的myitcast.xml文件,代码在下方
    public static String writeXML(List<Person> persons, Writer writer){
        XmlSerializer serializer = Xml.newSerializer();
        try {
            serializer.setOutput(writer);
            serializer.startDocument("UTF-8", true);
          //第一个参数为命名空间,如果不使用命名空间,可以设置为null
            serializer.startTag("", "persons");
            for (Person person : persons){
                serializer.startTag("", "person");
                serializer.attribute("", "id", person.getId().toString());
                serializer.startTag("", "name");
                serializer.text(person.getName());
                serializer.endTag("", "name");
                serializer.startTag("", "age");
                serializer.text(person.getAge().toString());
                serializer.endTag("", "age");
                serializer.endTag("", "person");
            }
            serializer.endTag("", "persons");
            serializer.endDocument();
            return writer.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    
    使用代码如下(生成XML文件):
     
    File xmlFile = new File("myitcast.xml");
    FileOutputStream outStream = new FileOutputStream(xmlFile);
    OutputStreamWriter outStreamWriter = new OutputStreamWriter(outStream, "UTF-8");
    BufferedWriter writer = new BufferedWriter(outStreamWriter);
    writeXML(persons, writer);
    writer.flush();
    writer.close();
    
    如果只想得到生成的xml字符串内容,可以使用StringWriter:
     
    StringWriter writer = new StringWriter();
    writeXML(persons, writer);
    String content = writer.toString();
    

    2、

    public static void save(List<Person> persons,OutputStream out)throws Exception{
    		XmlSerializer xmlSerializer=Xml.newSerializer();
    		xmlSerializer.setOutput(out, "UTF-8");
    		xmlSerializer.startDocument("UTF-8", true);
    		xmlSerializer.startTag(null, "persons");
    		
    		for(Person person:persons){
    			xmlSerializer.startTag(null, "person");
    			xmlSerializer.attribute(null, "id", person.getId().toString());
    			
    			xmlSerializer.startTag(null, "name");
    			xmlSerializer.text(person.getName());
    			xmlSerializer.endTag(null, "name");
    			
    			xmlSerializer.startTag(null, "age");
    			xmlSerializer.text(person.getAge().toString());
    			xmlSerializer.endTag(null, "age");
    			
    			xmlSerializer.endTag(null, "person");
    		}
    		xmlSerializer.endTag(null, "persons");
    		xmlSerializer.endDocument();
    		out.flush();
    		out.close();
    	}
    

     调用上面方法输出xml文件

    public void testSavePerson()throws Exception{
    		List<Person> persons=new ArrayList<Person>();
    		persons.add(new Person("zhangss",12,23));
    		persons.add(new Person("xiaoxiao",45,21));
    		persons.add(new Person("zhagnni",10,47));
    		File file=new File(getContext().getFilesDir().toString(),"person.xml");
    		FileOutputStream out=new FileOutputStream(file);
    		new PersonService().save(persons, out);
    	}
    
  • 相关阅读:
    【Qt开发】01-第一个Qt程序Hello World!
    Git使用总结(三):协同开发常见冲突
    公钥、私钥、数字签名、数字证书、对称与非对称算法、HTTPS
    通俗理解TCP的三次握手
    Flink安装极简教程-单机版
    程序员工资那些事!
    vim实战:插件安装(Vundle,NerdTree)
    Git使用总结(二):分支管理
    Git使用总结(一):简介与基本操作
    C++11并发编程:多线程std::thread
  • 原文地址:https://www.cnblogs.com/wdc224/p/3920715.html
Copyright © 2011-2022 走看看