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()
}
}
实例:holen.xml
<?xml version="1.0" encoding="UTF-8"?>
<books>
<!--This is a test for dom4j, holen, 2004.9.11-->
<book show="yes">
<title>Dom4j Tutorials</title>
</book>
<book show="yes">
<title>Lucene Studing</title>
</book>
<book show="no">
<title>Lucene in Action</title>
</book>
<owner>O'Reilly</owner>
</books>
建立一个XML文档:
/**
* 建立一个XML文档,文档名由输入属性决定
* @param filename 需建立的文件名
* @return 返回 *** 作结果, 0表失败, 1表成功
*/
public int createXMLFile(String filename){
/** 返回 *** 作结果, 0表失败, 1表成功 */
int returnValue = 0
/** 建立document对象 */
Document document = DocumentHelper.createDocument()
/** 建立XML文档的根books */
Element booksElement = document.addElement("books")
/** 加入一行注释 */
booksElement.addComment("This is a test for dom4j, holen, 2004.9.11")
/** 加入第一个book节点 */
Element bookElement = booksElement.addElement("book")
/** 加入show属性内容 */
bookElement.addAttribute("show","yes")
/** 加入title节点 */
Element titleElement = bookElement.addElement("title")
/** 为title设置内容 */
titleElement.setText("Dom4j Tutorials")
/** 类似的完成后两个book */
bookElement = booksElement.addElement("book")
bookElement.addAttribute("show","yes")
titleElement = bookElement.addElement("title")
titleElement.setText("Lucene Studing")
bookElement = booksElement.addElement("book")
bookElement.addAttribute("show","no")
titleElement = bookElement.addElement("title")
titleElement.setText("Lucene in Action")
/** 加入owner节点 */
Element ownerElement = booksElement.addElement("owner")
ownerElement.setText("O'Reilly")
try{
/** 将document中的内容写入文件中 */
XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)))
writer.write(document)
writer.close()
/** 执行成功,需返回1 */
returnValue = 1
}catch(Exception ex){
ex.printStackTrace()
}
return returnValue
}
说明:
Document document = DocumentHelper.createDocument()
通过这句定义一个XML文档对象。
Element booksElement = document.addElement("books")
通过这句定义一个XML元素,这里添加的是根节点。
Element有几个重要的方法:
l addComment:添加注释
l addAttribute:添加属性
l addElement:添加子元素
import java.io.*\x0d\x0a \x0d\x0aimport org.dom4j.*\x0d\x0a import org.dom4j.io.OutputFormat\x0d\x0a import org.dom4j.io.XMLWriter\x0d\x0a \x0d\x0apublic class DOM4JTest {\x0d\x0a public static void main(String[] args) {\x0d\x0a Document doc = DocumentHelper.createDocument()\x0d\x0a doc.addProcessingInstruction("xml-stylesheet", "type='text/xsl href='students.xsl'")\x0d\x0a Element root = doc.addElement("students")\x0d\x0a \x0d\x0aElement eltStu1 = root.addElement("student").addAttribute("sn", "01")\x0d\x0a Element eltName1 = eltStu1.addElement("name")\x0d\x0a Element eltAge1 = eltStu1.addElement("age")\x0d\x0a eltName1.setText("张三")\x0d\x0a eltAge1.setText("20")\x0d\x0a \x0d\x0aElement eltStu2 = root.addElement("student").addAttribute("sn", "02")\x0d\x0a Element eltName2 = eltStu2.addElement("name")\x0d\x0a Element eltAge2 = eltStu2.addElement("age")\x0d\x0a eltName2.setText("李四")\x0d\x0a eltAge2.setText("18")\x0d\x0a \x0d\x0atry {\x0d\x0aOutputFormat format = new OutputFormat("\x0d\x0a ", true)\x0d\x0aformat.setEncoding("gb2312")\x0d\x0a// 可以把System.out改为你要的流。\x0d\x0aXMLWriter xmlWriter = new XMLWriter(new PrintWriter(System.out), format)\x0d\x0axmlWriter.write(doc)\x0d\x0axmlWriter.close()\x0d\x0a } catch (IOException e) {\x0d\x0ae.printStackTrace()\x0d\x0a }\x0d\x0a }\x0d\x0a }欢迎分享,转载请注明来源:内存溢出
评论列表(0条)