JAVA生成XML文件

JAVA生成XML文件

大家好,又见面了,我是全栈君。

 Java Bean:

package xml;

public class Person {
private String name ;
private int age ;


public Person(String name, int age) {
  super();
  this.name = name;
  this.age = age;
}

public String getName() {
  return name;
}

public void setName(String name) {
  this.name = name;
}

public int getAge() {
  return age;
}

public void setAge(int age) {
  this.age = age;
}


}

详细实现:

package xml;

import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class XmlGeneratorDemo {
public static void main(String[] args) {
  String outputPath = System.getProperty("user.dir")+File.separator + "src"+File.separator+"person.xml";
  generateXml(outputPath);
}
public static void generateXml(String outputPath) {
  try {
   Person [] arr = new Person[]{new Person("jinbo",20), new Person("gameboy",25)};
   List<Person> list = Arrays.asList(arr);//将数组转换成List
   Document doc = generateXml(list);//生成XML文件
   outputXml(doc, outputPath);//将文件输出到指定的路径
  } catch (Exception e) {
   System.err.println("出现异常");
  }
}
/**
  * 将XML文件输出到指定的路径
  * @param doc
  * @param fileName
  * @throws Exception
  */
private static void outputXml (Document doc, String fileName) throws Exception{
  TransformerFactory tf = TransformerFactory.newInstance();
  Transformer transformer = tf.newTransformer();
  DOMSource source = new DOMSource(doc);
  transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
  transformer.setOutputProperty(OutputKeys.INDENT, "yes");//设置文档的换行与缩进
  PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
  StreamResult result = new StreamResult(pw);
  transformer.transform(source, result);
  System.out.println("生成XML文件成功!");
}
/**
  * 生成XML文件
  * @param list
  * @return
  */
public static Document generateXml(List<Person> list){
  Document doc = null;
  Element root = null;
  try {
   DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
   DocumentBuilder builder = factory.newDocumentBuilder();
   doc = builder.newDocument();
   root = doc.createElement("person");
   doc.appendChild(root);
  } catch (Exception e) {
   e.printStackTrace();
   return null;//假设出现异常,则不再往下运行
  }
  
  int len = list.size() ;
  Element element ;
  for (int i = 0; i < len; i++) {
   Person person = list.get(i);
   element = doc.createElement("person"+(i+1));
   element.setAttribute("age", ""+person.getAge());
   element.setAttribute("name", person.getName());
   root.appendChild(element);
  }
  return doc;
}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116340.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Mac 下读写NTFS文件

    Mac 下读写NTFS文件MacOS版本:10.11.16 (OSXEICapitan)文章末尾附上小白使用使用方式 1、首先插入需要写入文件的NTFS格式的U盘或移动硬盘2、打开终端,然后执行以下命令,会提示输入密码,输入当前登录账号的密码即可,如果不行请输入root账号的密码sudonano/etc/fstab3、显示如下信息GNUnano2.0.6…

  • [转载]windows phone 墓碑化(9)

    [转载]windows phone 墓碑化(9)

  • datagrip激活码2021(JetBrains全家桶)

    (datagrip激活码2021)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html0E14HXZ4QL-eyJsa…

  • WC代码行数统计

    WC代码行数统计

  • 关系数据库的范式理论_数据库规范化理论依据

    关系数据库的范式理论_数据库规范化理论依据文章目录求关系模式最高达到第几范式的步骤通俗理解1NF,2NF,3NF.如何求关系模式的候选码如何求闭包函数依赖求关系模式最高达到第几范式的步骤根据给定的U和F,首先求它的候选码根据候选码判断关系F中的函数关系是否满足第二范式,若不满足则为关系模式的规范化最高为第一范式然后判断是否存在非主属性传递依赖,如果存在则不满足第二范式,如果不存在则关系模式的规范化最高为第三范式.通俗理解1N…

    2022年10月16日
  • goland 2021.5 激活码(最新序列号破解)

    goland 2021.5 激活码(最新序列号破解),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号