java创建XML文件到本地并写入数据

1.创建XML,添加内容,然后写入到本地。

采用DOM(JAXP Crimson解析器)处理,Java提供了四种处理方法,这里选取其一

//整体思路,
//创建文档构建器工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//创建一个文档构建器,此处需要try,catch处理一下
DocumentBuilder db = factory.newDocumentBuilder();
// 创建xmldoc文档对象,用来创建节点。
Document xmldoc = db.newDocument();
// 创建books根节点
books = xmldoc.createElement("books");

// 将books根节点添加到xmldoc上
xmldoc.appendChild(books);

//然后就是在根节点下添加新的节点,先创建新节点,给新节点添加文本属性,或者创建文本节点,将文本节点添加到新节点上。
theBook = xmldoc.createElement("book");
// --- 另外还想加一个属性id,值为B01 ----
theBook.setAttribute("id", "B01");
theElem = xmldoc.createElement("name");
//给新节点添加文本属性
theElem.setTextContent("哈里波特");
//创建文本节点,将文本节点添加到新节点上。
//theElem.appendChild(xmldoc.createTextNode("哈里波特2"));
//theBook 下添加theElem节点
theBook.appendChild(theElem);
//books根节点下添加theBook节点
books.appendChild(theBook);

可以将每次创建新节点,添加到父节点上的步骤封装起来,便于代码复用

	// 添加子节点到该节点上(父节点对象,子节点名称,子节点文本)
	public void addChildElement(Element element, String child_ele_name, String text) {
		Document doc = element.getOwnerDocument();
		Element sub_element = createLeafElement(doc, child_ele_name, text);
		element.appendChild(sub_element);
	}

	// 创建叶节点(无子节点的节点)(文档对象,节点名,节点文本)
	public Element createLeafElement(Document doc, String eleName, String text) {
		// 创建节点需要doc对象
		Element ele = doc.createElement(eleName);
		if (text != null) {
			// 创建文本节点,并添加到叶子节点上。
			ele.appendChild(doc.createTextNode(text));
		}
		return ele;
	}

下面看一个具体实例,运行main方法即可。

xml格式
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<books>
	<book id="B01">
		<name>神雕侠侣</name>
		<price>10</price>
		<memo>徒弟和师傅外加一只雕的故事。</memo>
	</book>
</books>
package com.leo.xml;

import java.io.File;

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.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.Document;
import org.w3c.dom.Element;

public class NewXMl {
	public static void main(String[] args) {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = null;
		try {
			db = factory.newDocumentBuilder();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}
		// 声明3个变量,可以复用。
		Element books = null, Book = null, Elem = null;
		// 创建xmldoc对象,用来创建节点。
		Document xmldoc = db.newDocument();
		
		// 创建books节点
		books = xmldoc.createElement("books");
		// 将books节点添加到xmldoc上
		xmldoc.appendChild(books);

		Book = xmldoc.createElement("book");
		// --- 另外还想加一个属性id,值为B01 ----
		Book.setAttribute("id", "B01");
		Elem = xmldoc.createElement("name");
		Elem.setTextContent("笑傲江湖");
		//Elem.appendChild(xmldoc.createTextNode("天龙八部"));
		Book.appendChild(Elem);
		Elem = xmldoc.createElement("price");
		Elem.setTextContent("20");
		Book.appendChild(Elem);
		Elem = xmldoc.createElement("memo");
		Elem.setTextContent("令狐冲与东方不败的爱恨情仇。");
		Book.appendChild(Elem);
		books.appendChild(Book);
		
		
		// ** 将document中的内容写入文件中 *//*
		// 创建TransformerFactory对象
		TransformerFactory tFactory = TransformerFactory.newInstance();
		Transformer transformer;
		try {
			// 创建transformer 对象
			transformer = tFactory.newTransformer();
			// ** 设置xml编码 格式**
			transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
			DOMSource source = new DOMSource(xmldoc);
			//设置本地保存路径
			StreamResult result = new StreamResult(new File("D:/123.xml"));
			transformer.transform(source, result);
		} catch (TransformerConfigurationException e) {
			e.printStackTrace();
		} catch (TransformerException e) {
			e.printStackTrace();
		}
		
	}

	
}

最后,可以了解一下,Java读取XML数据,采用Dom方式

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用Java API操作HDFS的示例代码,创建文件并写入内容: ```java import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; public class HdfsDemo { public static void main(String[] args) throws IOException { Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); // 创建文件并写入内容 String filePath = "/user/hadoop/test.txt"; Path file = new Path(filePath); if (fs.exists(file)) { System.out.println("文件已存在,删除文件"); fs.delete(file, true); } OutputStream os = fs.create(file); os.write("Hello, Hadoop!".getBytes("UTF-8")); os.flush(); os.close(); System.out.println("文件创建成功"); // 读取文件内容 InputStream is = fs.open(file); IOUtils.copyBytes(is, System.out, 4096, false); IOUtils.closeStream(is); fs.close(); } } ``` 在上述示例代码中,使用`FileSystem.get(conf)`方法获取到HDFS文件系统对象,然后使用`fs.exists(file)`方法判断文件是否已经存在,如果存在则使用`fs.delete(file, true)`方法删除文件。接着使用`fs.create(file)`方法创建文件,并使用`os.write()`方法写入内容。最后使用`fs.open(file)`方法读取文件内容,使用`IOUtils.copyBytes()`方法将内容输出到控制台。 需要注意的是,在操作HDFS时,需要配置`core-site.xml`和`hdfs-site.xml`两个配置文件。`core-site.xml`配置文件中需要配置Hadoop集群的名称和HDFS的访问地址,`hdfs-site.xml`配置文件中需要配置HDFS的副本数和数据块大小等信息。在本地运行Java程序时,需要将这两个配置文件放在classpath下,或者在程序中使用`conf.addResource()`方法加载配置文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跳舞 D 猴子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值