动态生成XML

天给大家讲一下如何动态生成XML文件:

一般来说动态生成XML文件有三种方式:

1.使用Document动态生成XML

2.dom4j

3.直接将对象集合,使用C标签展示到XML文件中


接下来我先将三种方式的大纲以及需要的使用的类和方法列出来:

1.使用Document动态生成XML

 <1>.创建Document

    ①实例化Document工厂:DocumentBuilderFactory

    ②实例化Document构造器:DocumentBuilder

    ③实例化Document:Document

    ④创建标签:document.createElement();

    ⑤创建属性:document.createAttribute();

    ⑥建立关系:appendChild();

 <2>.将Document保存到本地XML中

    ①实例化转化工厂:TransFormerFactory

    ②实例化转换器:TransFormer

    ③设置来源:Source:DOMSource

    ④设置目的地:Result:StreamResult

    ⑤转换:transfrom();


代码如下:

package com.zking.test;

import Java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

/**
 * 创建XML 使用Document
 * @author Administrator
 *
 */
public class TestCreateXMlByDocument {
    public static void main(String[] args) {
        try {
            //1.实例化DocumentBuilderFactory
            DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
            //2.通过dbf获取DocumentBuilder
            DocumentBuilder db=dbf.newDocumentBuilder();
            //3.创建Document
            Document document=db.newDocument();
            
            //4.创建标签<persons>
            Element elementPersons=document.createElement("persons");
            //创建<person>
            Element elementPerson=document.createElement("person");
            //创建<page>
            Element elementPage=document.createElement("page");
            //给标签设值
            elementPage.setTextContent("22");
            //创建<psex>
            Element elementPsex=document.createElement("psex");
            elementPsex.setTextContent("男");
            
            //5.创建属性
            Attr attrPid=document.createAttribute("pid");
            //给属性设值
            attrPid.setValue("1");
            Attr attrPname=document.createAttribute("pname");
            attrPname.setValue("hug");
            
            //6.建立关系
            document.appendChild(elementPersons);
            elementPersons.appendChild(elementPerson);
            elementPerson.appendChild(elementPage);
            elementPerson.appendChild(elementPsex);
            elementPerson.setAttributeNode(attrPid);
            elementPerson.setAttributeNode(attrPname);
            
            System.out.println("创建OK");
            
            
            //将生成的Document保存到XML文件中
            //1.实例化转换器工厂
            TransformerFactory tff=TransformerFactory.newInstance();
            //2.通过tff获取转换器
            Transformer transformer=tff.newTransformer();
            
            //来源
            DOMSource source=new DOMSource(document);
            //结果
            StreamResult streamResult=new StreamResult(new File("my.xml"));
            
            //3.开始转换
            transformer.transform(source, streamResult);
            
            System.out.println("保存成功");
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (TransformerConfigurationException e) {
            e.printStackTrace();
        } catch (TransformerException e) {
            e.printStackTrace();
        }
    }
}



2.dom4j

使用dom4j时需要先下载jar包,下载地址 http://www.dom4j.org/dom4j-1.6.1/


<1>.创建Document

 ①使用DocumentHelper创建Document

 ②添加标签:addElement("标签名")

 ③添加属性:addAttribute("属性名","属性值")

<2>.将Document保存到本地XML中

 ①实例化输出格式:OutputFormat.createPrettyprint()

 ②指定输出文件路径:XMLWriter


代码如下:

package com.zking.test;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

/**
 * 使用DOM4J创建XML
 * @author Administrator
 *
 */
public class TestCreateXMLByDom4j {
    public static void main(String[] args) {
        try {
            //1.创建Document
            Document document=DocumentHelper.createDocument();
            //2.创建标签<students>
            Element elementStudents=document.addElement("students");
            //创建标签<student>
            Element elementStudent=elementStudents.addElement("student");
            //设值属性
            elementStudent.addAttribute("sid", "1");
            elementStudent.addAttribute("sname", "hug");
            
            //创建标签<sage><ssex>
            Element elementSage=elementStudent.addElement("sage");
            //设值
            elementSage.setText("140");
            Element elementSsex=elementStudent.addElement("ssex");
            elementSsex.setText("男");
            
            //生成到XML中
            FileOutputStream fos=new FileOutputStream("students.xml");
            XMLWriter xmlWriter=new XMLWriter(fos,OutputFormat.createPrettyPrint());
            xmlWriter.write(document);
            xmlWriter.close();
            System.out.println("OK");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }
}



3.直接将对象集合,使用C标签展示到XML文件中

 ①将对象集合保存到请求域中

 ②在jsp页面,使用C标签编译对象集合

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Freemarker是一个模板引擎,可以用来生成各种动态内容,包括XML。 要使用Freemarker生成动态XML,首先需要定义一个XML模板。这个模板中包含了XML的结构和一些占位符,用于插入动态数据。可以使用Freemarker的语法来定义这些占位符,比如使用<#if>标签来进行条件判断,或者使用<#list>标签来循环生成XML节点。 接下来,我们需要准备一些数据,用于填充XML模板中的占位符。这些数据可以是一个Java对象,也可以是一个Map对象。我们可以将这些数据传递给Freemarker的模板引擎,并使用模板引擎的API来将数据和模板进行合并,生成最终的动态XML生成动态XML的过程大致如下: 1. 定义XML模板,包含XML的结构和占位符。 2. 准备数据,用于填充占位符。 3. 使用Freemarker的模板引擎将数据和模板进行合并,生成最终的XML。 以下是一个简单示例,生成一个包含动态数据的XMLXML模板 ("template.xml"): ```xml <root> <message>${message}</message> <items> <#list items as item> <item>${item}</item> </#list> </items> </root> ``` Java代码: ```java import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; import java.io.IOException; import java.io.StringWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class GenerateDynamicXml { public static void main(String[] args) { // 准备数据 Map<String, Object> data = new HashMap<>(); data.put("message", "Hello, Freemarker!"); List<String> items = new ArrayList<>(); items.add("Item 1"); items.add("Item 2"); items.add("Item 3"); data.put("items", items); // 配置Freemarker Configuration configuration = new Configuration(Configuration.VERSION_2_3_28); configuration.setClassForTemplateLoading(GenerateDynamicXml.class, "/"); configuration.setDefaultEncoding("UTF-8"); try { // 加载模板 Template template = configuration.getTemplate("template.xml"); // 合并数据和模板 StringWriter writer = new StringWriter(); template.process(data, writer); // 打印生成XML System.out.println(writer.toString()); } catch (IOException | TemplateException e) { e.printStackTrace(); } } } ``` 以上代码会生成如下的动态XML: ```xml <root> <message>Hello, Freemarker!</message> <items> <item>Item 1</item> <item>Item 2</item> <item>Item 3</item> </items> </root> ``` 通过这个示例,我们可以看到,Freemarker非常灵活,可以根据数据动态生成各种格式的内容,包括XML

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值