
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.testimport 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,这个类我已经用完整形式写出来了,你去网上下载下来,添加进工程即可。
弱国觉得可行,望采纳^_^
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)