在Java中写入XML文件
我正在编写以下代码:在Java中写入XML文件,java,xml,Java,Xml,我正在编写以下代码: import java.io.*; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.transform.stream.*; import org.w3c.dom.*; public class CreatXMLFile { public static void main(String[] args)
import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import org.w3c.dom.*;
public class CreatXMLFile {
public static void main(String[] args) throws Exception {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
// System.out.print("Enter number to add elements in your XML file: ");
// String str = bf.readLine();
int no=2;
// System.out.print("Enter root: ");
String root = "SMS";
DocumentBuilderFactory documentBuilderFactory =DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder =documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.newDocument();
Element rootElement = document.createElement(root);
document.appendChild(rootElement);
// for (int i = 1; i <= no; i++)
// System.out.print("Enter the element: ");
// String element = bf.readLine();
String element ="Number";
System.out.print("Enter the Number: ");
String data = bf.readLine();
Element em = document.createElement(element);
em.appendChild(document.createTextNode(data));
rootElement.appendChild(em);
String element1 ="message";
System.out.print("Enter the SMS: ");
String data1 = bf.readLine();
Element em1 = document.createElement(element1);
em1.appendChild(document.createTextNode(data1));
rootElement.appendChild(em1);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
}
}
import java.io.*;
导入javax.xml.parsers.*;
导入javax.xml.transform.*;
导入javax.xml.transform.dom.*;
导入javax.xml.transform.stream.*;
导入org.w3c.dom.*;
公共类创建XML文件{
公共静态void main(字符串[]args)引发异常{
BufferedReader bf=新的BufferedReader(新的InputStreamReader(System.in));
//System.out.print(“输入要在XML文件中添加元素的编号:”);
//字符串str=bf.readLine();
int no=2;
//系统输出打印(“输入根:”;
字符串root=“SMS”;
DocumentBuilderFactory DocumentBuilderFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder DocumentBuilder=documentBuilderFactory.newDocumentBuilder();
Document Document=documentBuilder.newDocument();
元素根元素=document.createElement(根);
document.appendChild(rootElement);
//对于(int i=1;i使用(或a)而不是System.out
来构造您的。以下是此问题的完整解决方案:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringWriter;
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.TransformerException;
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 CreatXml {
/**
* @param args
* @throws TransformerException
* @throws ParserConfigurationException
* @throws IOException
*/
public static void main(String[] args) throws TransformerException, ParserConfigurationException, IOException {
// TODO Auto-generated method stub
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
// System.out.print("Enter number to add elements in your XML file: ");
// String str = bf.readLine();
int no=2;
// System.out.print("Enter root: ");
String root = "SMS";
DocumentBuilderFactory documentBuilderFactory =DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder =documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.newDocument();
Element rootElement = document.createElement(root);
document.appendChild(rootElement);
// for (int i = 1; i <= no; i++)
// System.out.print("Enter the element: ");
// String element = bf.readLine();
String element ="Number";
System.out.print("Enter the Number: ");
String data = bf.readLine();
Element em = document.createElement(element);
em.appendChild(document.createTextNode(data));
rootElement.appendChild(em);
String element1 ="message";
System.out.print("Enter the SMS: ");
String data1 = bf.readLine();
Element em1 = document.createElement(element1);
em1.appendChild(document.createTextNode(data1));
rootElement.appendChild(em1);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new StringWriter());
//t.setParameter(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "5");
transformer.transform(source, result);
//writing to file
FileOutputStream fop = null;
File file;
try {
file = new File("/home/zurelsoft/Desktop/newfile1.txt");
fop = new FileOutputStream(file);
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}
// get the content in bytes
String xmlString = result.getWriter().toString();
System.out.println(xmlString);
byte[] contentInBytes = xmlString.getBytes();
fop.write(contentInBytes);
fop.flush();
fop.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fop != null) {
fop.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.io.StringWriter;
导入javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.parsers.parserConfiguration异常;
导入javax.xml.transform.OutputKeys;
导入javax.xml.transform.Transformer;
导入javax.xml.transform.TransformerException;
导入javax.xml.transform.TransformerFactory;
导入javax.xml.transform.dom.DOMSource;
导入javax.xml.transform.stream.StreamResult;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
公共类创建XML{
/**
*@param args
*@TransformerException
*@throws-ParserConfigurationException
*@抛出异常
*/
公共静态void main(字符串[]args)引发TransformerException、ParserConfiguration异常、IOException{
//TODO自动生成的方法存根
BufferedReader bf=新的BufferedReader(新的InputStreamReader(System.in));
//System.out.print(“输入要在XML文件中添加元素的编号:”);
//字符串str=bf.readLine();
int no=2;
//系统输出打印(“输入根:”;
字符串root=“SMS”;
DocumentBuilderFactory DocumentBuilderFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder DocumentBuilder=documentBuilderFactory.newDocumentBuilder();
Document Document=documentBuilder.newDocument();
元素根元素=document.createElement(根);
document.appendChild(rootElement);
//为了(int i=1;我阅读了XML类的文档:您需要这样做:…,打开文件,将XML转换为字符串,将字符串写入文件,关闭文件。@lexu:您不需要先将其转换为字符串。XML库可以直接流式传输到文件中。@Thilo。您能帮我吗?我仍然不知道如何做。@user243680:Joachim的答案不适合你?用新文件(“myfile.xml”)替换System.out即可。@thilo非常感谢。工作非常好。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringWriter;
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.TransformerException;
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 CreatXml {
/**
* @param args
* @throws TransformerException
* @throws ParserConfigurationException
* @throws IOException
*/
public static void main(String[] args) throws TransformerException, ParserConfigurationException, IOException {
// TODO Auto-generated method stub
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
// System.out.print("Enter number to add elements in your XML file: ");
// String str = bf.readLine();
int no=2;
// System.out.print("Enter root: ");
String root = "SMS";
DocumentBuilderFactory documentBuilderFactory =DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder =documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.newDocument();
Element rootElement = document.createElement(root);
document.appendChild(rootElement);
// for (int i = 1; i <= no; i++)
// System.out.print("Enter the element: ");
// String element = bf.readLine();
String element ="Number";
System.out.print("Enter the Number: ");
String data = bf.readLine();
Element em = document.createElement(element);
em.appendChild(document.createTextNode(data));
rootElement.appendChild(em);
String element1 ="message";
System.out.print("Enter the SMS: ");
String data1 = bf.readLine();
Element em1 = document.createElement(element1);
em1.appendChild(document.createTextNode(data1));
rootElement.appendChild(em1);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new StringWriter());
//t.setParameter(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "5");
transformer.transform(source, result);
//writing to file
FileOutputStream fop = null;
File file;
try {
file = new File("/home/zurelsoft/Desktop/newfile1.txt");
fop = new FileOutputStream(file);
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}
// get the content in bytes
String xmlString = result.getWriter().toString();
System.out.println(xmlString);
byte[] contentInBytes = xmlString.getBytes();
fop.write(contentInBytes);
fop.flush();
fop.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fop != null) {
fop.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}