
正文
java用代码生成xml java 生成xml
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
如何用java代码创建xml文件
用java自带的就可以,有问题可以问我
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
//构造
public XMLUtil(String name) throws ParserConfigurationException {
filename = name;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
document = builder.newDocument();
}
/**
* 保存到文件
*/
public void toSave() {
try {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter pw = new PrintWriter(new FileOutputStream(filename));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
} catch (TransformerException mye) {
mye.printStackTrace();
} catch (IOException exp) {
exp.printStackTrace();
}
}
相关问答
Q1: 如何用java生成一个XML文件,并且将该文件压
package com.test.io;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class CreateXmlFile {
private static final String XML_TITLE = "?xml version=\"1.0\" encoding=\"utf-8\"?";
private static final String FILE_PATH = "d:";
private static final String FILE_SPE = "/";
private static final String CHANGE_LINES = "\n";
private static final String FILE_NAME = "text.xml";
public static void main(String[] args) {
String xml = appendStr();
try {
File file = createXmlFile(FILE_PATH + FILE_SPE + FILE_NAME);
writeDoc(file, xml);
System.out.println("文件已经创建:");
System.out.println("目录:" + FILE_PATH + FILE_SPE + FILE_NAME);
System.out.println("文件内容为:");
System.out.println(xml);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 组装XML内容
* @return
*/
private static String appendStr(){
StringBuffer sb = new StringBuffer();
sb.append(XML_TITLE).append(CHANGE_LINES);
sb.append("book").append(CHANGE_LINES);
sb.append("name").append(CHANGE_LINES);
sb.append("《好玩》").append(CHANGE_LINES);
sb.append("/name").append(CHANGE_LINES);
sb.append("/book").append(CHANGE_LINES);
return sb.toString();
}
/**
* 将内容写入文件
* @param file
* @param str
*/
private static void writeDoc(File file,String str){
OutputStream out = null;
try {
out = new FileOutputStream(file);
out.write(str.getBytes());
}catch(Exception ex){
//
ex.printStackTrace();
}finally{
if(out != null){
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
* 创建文件
* @param path
* @return
* @throws IOException
*/
private static File createXmlFile(String path) throws IOException{
File file = new File(path);
if(!file.exists()){
file.createNewFile();
}
return file;
}
}
Q2: JAVA 生成xml格式,具体格式如下,请问JAVA方法怎么写
import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import org.w3c.dom.*;import org.xml.sax.SAXException;import javax.xml.parsers.*;import javax.xml.transform.*;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.*;import javax.xml.xpath.*;public class Test { public static void main(String[] args) { DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); Element theBook=null, theElem=null, root=null; try { factory.setIgnoringElementContentWhitespace(true); DocumentBuilder db=factory.newDocumentBuilder(); Document xmldoc=db.parse(new File("Test1.xml")); root=xmldoc.getDocumentElement(); theBook=(Element) selectSingleNode("/books/book[name='哈里波特']", root); System.out.println("--- 查询找《哈里波特》 ----"); Element nameNode=(Element)theBook.getElementsByTagName("price").item(0); String name=nameNode.getFirstChild().getNodeValue(); System.out.println(name); output(theBook); System.out.println("=============selectSingleNode(books/book[name='哈里波特'], root)=================="); //--- 新建一本书开始 ---- theBook=xmldoc.createElement("book"); theElem=xmldoc.createElement("name"); theElem.setTextContent("新书"); theBook.appendChild(theElem); theElem=xmldoc.createElement("price"); theElem.setTextContent("20"); theBook.appendChild(theElem); theElem=xmldoc.createElement("memo"); theElem.setTextContent("新书的更好看。"); theBook.appendChild(theElem); root.appendChild(theBook); System.out.println("--- 新建一本书开始 ----"); output(xmldoc); System.out.println("=============================="); //--- 新建一本书完成 ---- //--- 下面对《哈里波特》做一些修改。 ---- //--- 查询找《哈里波特》---- //--- 此时修改这本书的价格 ----- theBook.getElementsByTagName("price").item(0).setTextContent("15");//getElementsByTagName返回的是NodeList,所以要跟上item(0)。另外,getElementsByTagName("price")相当于xpath的".//price"。 System.out.println("--- 此时修改这本书的价格 ----"); output(theBook); //--- 另外还想加一个属性id,值为B01 ---- theBook.setAttribute("id", "B01"); System.out.println("--- 另外还想加一个属性id,值为B01 ----"); output(theBook); //--- 对《哈里波特》修改完成。 ---- //--- 要用id属性删除《三国演义》这本书 ---- theBook=(Element) selectSingleNode("/books/book[@id='B02']", root); System.out.println("--- 要用id属性删除《三国演义》这本书 ----"); output(theBook); theBook.getParentNode().removeChild(theBook); System.out.println("--- 删除后的XML ----"); output(xmldoc); //--- 再将所有价格低于10的书删除 ---- NodeList someBooks=selectNodes("/books/book[price10]", root); System.out.println("--- 再将所有价格低于10的书删除 ---"); System.out.println("--- 符合条件的书有 "+someBooks.getLength()+"本。 ---"); for(int i=0;isomeBooks.getLength();i++) { someBooks.item(i).getParentNode().removeChild(someBooks.item(i)); } output(xmldoc); saveXml("Test1_Edited.xml", xmldoc); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void output(Node node) {//将node的XML字符串输出到控制台 TransformerFactory transFactory=TransformerFactory.newInstance(); try { Transformer transformer = transFactory.newTransformer(); transformer.setOutputProperty("encoding", "gb2312"); transformer.setOutputProperty("indent", "yes"); DOMSource source=new DOMSource(); source.setNode(node); StreamResult result=new StreamResult(); result.setOutputStream(System.out); transformer.transform(source, result); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } } public static Node selectSingleNode(String express, Object source) {//查找节点,并返回第一个符合条件节点 Node result=null; XPathFactory xpathFactory=XPathFactory.newInstance(); XPath xpath=xpathFactory.newXPath(); try { result=(Node) xpath.evaluate(express, source, XPathConstants.NODE); } catch (XPathExpressionException e) { e.printStackTrace(); } return result; } public static NodeList selectNodes(String express, Object source) {//查找节点,返回符合条件的节点集。 NodeList result=null; XPathFactory xpathFactory=XPathFactory.newInstance(); XPath xpath=xpathFactory.newXPath(); try { result=(NodeList) xpath.evaluate(express, source, XPathConstants.NODESET); } catch (XPathExpressionException e) { e.printStackTrace(); } return result; } public static void saveXml(String fileName, Document doc) {//将Document输出到文件 TransformerFactory transFactory=TransformerFactory.newInstance(); try { Transformer transformer = transFactory.newTransformer(); transformer.setOutputProperty("indent", "yes"); DOMSource source=new DOMSource(); source.setNode(doc); StreamResult result=new StreamResult(); result.setOutputStream(new FileOutputStream(fileName)); transformer.transform(source, result); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } }} XML:?xml version="1.0" encoding="GBK"?booksbookname哈里波特/nameprice10/pricememo这是一本很好看的书。/memo/bookbook id="B02"name三国演义/nameprice10/pricememo四大名著之一。/memo/bookbook id="B03"name水浒/nameprice6/pricememo四大名著之一。/memo/bookbook id="B04"name红楼/nameprice5/pricememo四大名著之一。/memo/book/books
Q3: 使用java代码建立xml 并使用代码引用dtd,我想在建立过程中引用dtd,怎么实现,求大神,帮忙。。
使用XStream完成java类与XML互换。下面代码实现了以下4种基本功能:1.object类型转换为xml类型,在控制台打印2.xml类型转换为object类型,在控制台打印3.将object类型转换为xml类型,并写入XML文件4.读取XML文件,加载进相应Object类型====================================================1。加载XStream需要的jar包xstream-1.4.2.jarxpp3_min-1.1.4c.jarxmlpull-1.1.3.1.jar2。创建实体类User.javapackagecom.entity;/***实体类*/publicclassUser{privateStringuserName;privateStringpassWord;privateStringregisteredTime;publicUser(){}publicUser(StringuserName,StringpassWord,StringregisteredTime){this.userName=userName;this.passWord=passWord;this.registeredTime=registeredTime;}publicStringgetUserName(){returnuserName;}publicvoidsetUserName(StringuserName){this.userName=userName;}publicStringgetPassWord(){returnpassWord;}publicvoidsetPassWord(StringpassWord){this.passWord=passWord;}publicStringgetRegisteredTime(){returnregisteredTime;}publicvoidsetRegisteredTime(StringregisteredTime){this.registeredTime=registeredTime;}}3。编写功能实现类packagecom.switcher;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.text.SimpleDateFormat;importjava.util.Date;importcom.entity.User;importcom.thoughtworks.xstream.XStream;/****使用XStream不用任何映射就能实现多数Java对象的序列化。*在生成的XML中对象名变成了元素名,类中的字符串组成了XML中的元素内容。*使用XStream序列化的类不需要实现Serializable接口。*XStream是一种序列化工具而不是数据绑定工具*不能从XML或者XMLSchemaDefinition(XSD)文件生成类。*/publicclassSwitchXML{/**XStream不关心序列化/逆序列化的类的字段的可见性。*序列化/逆序列化类的字段不需要getter和setter方法。*序列化/逆序列化的类不需要有默认构造函数。*/privateXStreamxStream=newXStream();privateStringxmlPath="D:/userdata.xml";//1.obj-xml(object类型转换为xml类型)publicStringprintXML(Useruser){System.out.println("obj-xml");Stringxml=xStream.toXML(user);System.out.println(xml);returnxml;}//2.xml-obj(xml类型转换为object类型,并打印)publicvoidprintObj(Stringxml){System.out.println("xml-obj");Useru=(User)xStream.fromXML(xml);System.out.println(u.getUserName()+""+u.getPassWord()+""+u.getRegisteredTime());}//3.将object类型转换为xml类型,并写入XML文件(其他格式也可以,比如txt文件)publicvoidwriterXML(Useruser){try{FileOutputStreamfs=newFileOutputStream(xmlPath);xStream.toXML(user,fs);}catch(FileNotFoundExceptione){e.printStackTrace();}}//4.读取XML文件,加载进相应Object类型publicvoidreaderXML(){Useruser=newUser();FileInputStreamfis=null;try{fis=newFileInputStream(xmlPath);}catch(FileNotFoundExceptione){e.printStackTrace();}xStream.fromXML(fis,user);//打印对象信息System.out.println(user.toString());//打印对象的属性值System.out.println(user.getUserName()+"-"+user.getPassWord()+"-"+user.getRegisteredTime());}publicstaticvoidmain(String[]args){//用户名Stringusername="admin";//密码Stringpassword="admin";//注册时间Datenow=newDate();SimpleDateFormatformat=newSimpleDateFormat("yyyyMMddHHmmss");Stringregisteredtime=format.format(now);Useruser=newUser(username,password,registeredtime);SwitchXMLswitchXML=newSwitchXML();//1.object类型转换为xml类型,在控制台打印Stringxml=switchXML.printXML(user);System.out.println("---------------------");//2.xml类型转换为object类型,在控制台打印switchXML.printObj(xml);System.out.println("---------------------");//3.将object类型转换为xml类型,并写入XML文件switchXML.writerXML(user);System.out.println("---------------------");//4.读取XML文件,加载进相应Object类型switchXML.readerXML();}}
Q4: 怎么使用java导出大数据为xml文件
dom4j可以试试,不知道你的数据量有多大,如果太大的话,我没试过
xml文件是有规律的,你可以把要导出的数据构造一下,
我有个简单的代码
package com.test.xml;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class Dom4JXML {
public void createXML() {
//用工厂类创建一个document实例
Document doc = DocumentHelper.createDocument();
//创建根元素emps
Element rootEle = doc.addElement("emps");
//添加注释
rootEle.addComment("这是一个dom4j生成的xml文件");
//emps根节点下创建一个emp节点
Element empEle = rootEle.addElement("emp");
//emp添加属性id="1"
empEle.addAttribute("id", "1");
//emp节点下创建一个name节点
Element nameEle = empEle.addElement("name");
//name节点下创建一个文本节点zhangsan
nameEle.setText("zhangsan");
//再为name节点创建一个兄弟节点
Element sexEle = empEle.addElement("sex");
sexEle.setText("man");
//将document中的内容写入文件中
try {
Writer out = new FileWriter("F:\\emps.xml");
//格式化输出,类型IE浏览一样
OutputFormat format = OutputFormat.createPrettyPrint();
//OutputFormat format = OutputFormat.createCompactFormat();
format.setEncoding("UTF-8");
//创建写出对象
XMLWriter writer = new XMLWriter(out,format);
writer.write(doc);
writer.close();
System.out.println("生成emps.xml成功。");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("失败了。");
}
}
public static void main(String[] args) {
new Dom4JXML().createXML();
}
}
然而从xml文件中解析以后的数据收集可以用SAX试试看
我这里有个简单的例子
package com.test.xml;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class SAXParseHandler extends DefaultHandler{
public void startDocument()throws SAXException{
System.out.println("起始文挡");
}
public void endDocument()throws SAXException{
System.out.println("结束文挡");
}
public void characters(char[] ch,int start,int length)throws SAXException{
String charString=new String(ch,start,length);
System.out.println("字符:"+charString);
}
public void startElement(String namespaceURI,String localName,String qName,Attributes atts)throws SAXException{
System.out.println("起始元素:"+qName);
for(int i=0;iatts.getLength();i++){
System.out.println("属性值:"+atts.getValue(i));
}
}
public void endElement(String namespaceURI,String localName,String qName)throws SAXException{
System.out.println("结束元素:"+qName);
}
}
package com.test.xml;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class Books {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO 自动生成方法存根
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();
parser.parse("booksamp.xml",new SAXParseHandler());
}
}
java用代码生成xml的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 生成xml、java用代码生成xml的信息别忘了在本站进行查找喔。








