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);
    	}
    
  • 相关阅读:
    1级搭建类106-Oracle 19c 单实例 FS(华为云)公开
    table表格超出部分显示省略号
    hibernate自动创建表报表不存在
    TCP/IP协议三次握手与四次挥手
    struts2运行流程
    Errors occurred during the build. Errors running builder 'Validation' on pro
    ads查询结果中文显示方框问题
    plsql登录报错身份证明检索失败
    隐藏域传值到后台controller
    获取select被选中的option的值
  • 原文地址:https://www.cnblogs.com/wdc224/p/3920715.html
Copyright © 2011-2022 走看看