前端之家收集整理的这篇文章主要介绍了
xml读取和生成,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
大数据导出xml格式
思路:
先创建一个空白的xml文件 再用分页查询批次性导入xml 没问题的
对了 在每批导入后 将对象回收
你先写分批查询+导入嘛 注意在每个批次导入后清空对象内存就可以了
import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
*新建一个myXML文件在目录下:内容如下
*<hibernate-mapping>
* <class name="com.aptech.User" table="t_user">
* <property name="username"></property>
* <property name="password"></property>
* </class>
*</hibernate-mapping>
*
*/
public class Dom4j {
public static void main(String[] args)throws Exception {
System.out.println("=========readerXML=========");
readerXML();
System.out.println("\n\n\n=========readerXMLNodes=========");
readXMLNodes();
System.err.println("\n\n===========readerXMLChild==========");
readerXMLChild();
System.err.println("\n\n============= making end ......====================");
makeXML();
}
/**
* 得到子节点3种办法1.如下 2.迭代器(iterate)
* @throws Exception
*/
public static void readerXML() throws Exception{
//实例化SAXReader DOM4J核心对象
SAXReader reader=new SAXReader();
//得到document解析文件
Document document=reader.read(new File("myxml.xml"));
//得到文件节点名称
Element element=document.getRootElement();
//输出文件节点名称
System.out.println(element.getName());
}
public static void readXMLNodes() throws Exception{
SAXReader reader =new SAXReader();
Document document = reader.read(new File("myxml.xml"));
Element element=document.getRootElement();
for (Iterator i= element.elementIterator();i.hasNext();) {
Element nextElement=(Element)i.next();
System.out.println(nextElement.getName());
for (Iterator j = nextElement.attributeIterator();j.hasNext();) {
Attribute attribute=(Attribute)j.next();
System.out.println((attribute.getName()+"----"+attribute.getValue()));
}
}
}
/**
* 从指定的节点读取属性及值
* @throws Exception
*/
public static void readerXMLChild() throws Exception{
SAXReader reader =new SAXReader();
Document document=reader.read(new File("myxml.xml"));
List<Node> list = document.selectNodes("//hibernate-mapping/class/property");//找到指定节点
for (Node n:list) {
System.out.print(n.getName()+"===>");
System.out.println(n.valueOf("@name"));
}
}
/**
* 制作XML文件
* @throws Exception
*/
public static void makeXML()throws Exception{
//得到document对象
Document document =DocumentHelper.createDocument();
//添加根节点
Element root=document.addElement("hibernate-mapping");
//添加节点class,属性名为name与table 分别赋值
Element classElement=root.addElement("class")
.addAttribute("name","com.aptech.User").
addAttribute("table","t_user");//addText 节点里的文本
//添加property子节点,添加属性name 值为"username"
classElement.addElement("property").addAttribute("name","username");
//格式化输出文件
OutputFormat format=OutputFormat.createPrettyPrint();
//声明写出文件
XMLWriter writer=new XMLWriter(new FileWriter("User2.xml"),format);
//写出文件
writer.write(document);
//关闭文件流
writer.close();
}
}