JAVA中如何向XML文件中插入数据

JAVA中如何向XML文件中插入数据,第1张

cxzucc - 主管 六级 2009-11-12 20:32

sax,dom,dom4j,jdom等都是可以的,先看看资料吧

****************************************

这位仁兄说的不是对的,SAX是不能插入结点的。当然如果你说用SAX读到内存中创建一棵树再写回去那我就无言了。 像jdom、dom4j这些学一个其它的都懂了,没太大的区别。

输入这些关键字一搜网上的例子太多了

有很多种方法,用DOM或SAX, 还有JAXB等。下面给个DOM写的例子:

java使用DOM创建如下xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<root>

<name id="2">zs</name>

</root>

代码如下:

import java.io.File

import javax.xml.parsers.DocumentBuilder

import javax.xml.parsers.DocumentBuilderFactory

import javax.xml.transform.Transformer

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

import org.w3c.dom.Text

public class CreateXML {

public static void main(String[] args) throws Exception {

//实例化解析器

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance()

DocumentBuilder builder = factory.newDocumentBuilder()

//创建Document对象

Document doc = builder.newDocument()

//创建XML文件所需的各种对象并序列化

Element root = doc.createElement("root")

Element name = doc.createElement("name")

Text nameText = doc.createTextNode("zs")

name.appendChild(nameText)

root.appendChild(name)

doc.appendChild(root)

name.setAttribute("id", "2")

doc2XmlFile(doc,"test.xml")

}

public static boolean doc2XmlFile(Document document, String filename) {

boolean flag = true

try {

TransformerFactory tFactory = TransformerFactory.newInstance()

Transformer transformer = tFactory.newTransformer()

/** 编码 */

// transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312")

DOMSource source = new DOMSource(document)

StreamResult result = new StreamResult(new File(filename))

transformer.transform(source, result)

} catch (Exception ex) {

flag = false

ex.printStackTrace()

}

return flag

}

}

我以前学dom解析的时候写了一个小例子,你参考参考

package com.lhx.test

import java.io.File

import java.io.FileNotFoundException

import java.io.FileOutputStream

import java.io.IOException

import javax.xml.parsers.DocumentBuilder

import javax.xml.parsers.DocumentBuilderFactory

import javax.xml.parsers.ParserConfigurationException

import org.w3c.dom.Attr

import org.w3c.dom.Document

import org.w3c.dom.Element

import org.w3c.dom.Text

public class Test {

public static void main(String[] args) {

DocumentBuilderFactory  fct=DocumentBuilderFactory.newInstance()

try {

DocumentBuilder bui=fct.newDocumentBuilder()

Document doc=bui.newDocument()

Element ps=doc.createElement("persons")

Element p1=doc.createElement("person")

Element p2=doc.createElement("person")

Attr id1=doc.createAttribute("id")

Attr id2=doc.createAttribute("id")

id1.setNodeValue("1")

id2.setNodeValue("2")

Element name1=doc.createElement("name")

Text na1=doc.createTextNode("龙大哥")

Element name2=doc.createElement("name")

Text na2=doc.createTextNode("龙大爷")

Element sex1=doc.createElement("sex")

Text se1=doc.createTextNode("帅哥")

Element sex2=doc.createElement("sex")

Text se2=doc.createTextNode("妹子")

doc.appendChild(ps)

ps.appendChild(p1)

p1.appendChild(name1)

p1.setAttributeNode(id1)

name1.appendChild(na1)

p1.appendChild(sex1)

sex1.appendChild(se1)

ps.appendChild(p2)

p2.appendChild(name2)

p2.setAttributeNode(id2)

name2.appendChild(na2)

p2.appendChild(sex2)

sex2.appendChild(se2)

try {

FileOutputStream fos=new FileOutputStream(new File("E:/longdada.xml"))

try {

((org.apache.crimson.tree.XmlDocument)doc)

.write(fos)

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

try {

fos.flush()

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

try {

fos.close()

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

} catch (ParserConfigurationException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

}

附图:

这个例子有文本节点的创建,属性的创建等等,基本上可以解决绝大多数XML内容了。无论你想创建什么类型的XML,可以套用里面的方法。

另外,注意:文件通过流创建的时候用到一个类,需要一个jar,这个类我已经用完整形式写出来了,你去网上下载下来,添加进工程即可。

弱国觉得可行,望采纳^_^


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11927500.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存