element.addElement(name,url)//name为你的新定义元素节点名,URL就是你的名称空间。
当然,一般更多的是在根元素上定义缺省的名称空间,此时定义格式如下:
Element root=document.addElement(name,url)//name为你的新定义元素节点名,URL就是你的名称空间。
特别注意:不要通过类似于element.addNamspace("",url)这样的方式来为某个元素节点指定缺省名称空间,这样的做法就会出现你说描述的上述问题。
/*** 利用dom4j进行xml文档的写入 *** 作
*/
public void createXml(File file) {
// XML 声明 <?xml version="1.0" encoding="UTF-8"?>自动添加到 XML文档中
// 使用DocumentHelper类创建文档实例(生成 XML文档节点的 dom4j API工厂类)
Document document = DocumentHelper.createDocument()
// 使用addElement()方法创建根元素 employees(用于向 XML 文档中增加元素)
Element root = document.addElement("employees")
// 在根元素中使用 addComment()方法添加注释"An XML Note"
root.addComment("An XML Note")
// 在根元素中使用 addProcessingInstruction()方法增加一个处理指令
root.addProcessingInstruction("target", "text")
// 在根元素中使用 addElement()方法增加employee元素。
Element empElem = root.addElement("employee")
// 使用 addAttribute()方法向employee元素添加id和name属性
empElem.addAttribute("id", "0001")
empElem.addAttribute("name", "wanglp")
// 向employee元素中添加sex元素
Element sexElem = empElem.addElement("sex")
// 使用setText()方法设置sex元素的文本
sexElem.setText("m")
// 在employee元素中增加age元素 并设置该元素的文本。
Element ageElem = empElem.addElement("age")
ageElem.setText("25")
// 在根元素中使用 addElement()方法增加employee元素。
Element emp2Elem = root.addElement("employee")
// 使用 addAttribute()方法向employee元素添加id和name属性
emp2Elem.addAttribute("id", "0002")
emp2Elem.addAttribute("name", "fox")
// 向employee元素中添加sex元素
Element sex2Elem = emp2Elem.addElement("sex")
// 使用setText()方法设置sex元素的文本
sex2Elem.setText("f")
// 在employee元素中增加age元素 并设置该元素的文本。
Element age2Elem = emp2Elem.addElement("age")
age2Elem.setText("24")
// 可以使用 addDocType()方法添加文档类型说明。
// document.addDocType("employees", null, "file://E:/Dtds/dom4j.dtd")
// 这样就向 XML 文档中增加文档类型说明:
// <!DOCTYPE employees SYSTEM "file://E:/Dtds/dom4j.dtd">
// 如果文档要使用文档类型定义(DTD)文档验证则必须有 Doctype。
try {
XMLWriter output = new XMLWriter(new FileWriter(file))
output.write(document)
output.close()
} catch (IOException e) {
System.out.println(e.getMessage())
}
}
这段源码里面包含了各种 *** 作
可以参考 :package com.zuxia.dom4j
import java.io.File
import java.io.FileOutputStream
import java.util.Iterator
import java.util.List
import java.util.Scanner
import org.dom4j.Document
import org.dom4j.Element
import org.dom4j.io.OutputFormat
import org.dom4j.io.SAXReader
import org.dom4j.io.XMLWriter
/**
*
* 使用dom4j解析xml
*
* 1. 创建解析器
*
* 2. 创建文档对象Document
*
* 3. 获取根节点
*
*/
public class Dom4jParseXML {
public static void main(String[] args) {
//1. 创建解析器
SAXReader saxreader = new SAXReader()
Document doc = null
try {
//2. 创建文档对象Document
doc = saxreader.read(new File("src/studentinfo.xml"))
} catch (Exception e) {
System.out.println("读取xml文件异常!")
}
//3. 获取根节点
Element root = doc.getRootElement()
//4. 获取元素
Iterator<Element>iter = root.elementIterator()
while(iter.hasNext()){
Element student = iter.next()
System.out.println("学号:"+student.attributeValue("stuno")+"\t姓名:"+student.elementText("name"))
}
//提示用户添加新的数据
Scanner sc = new Scanner(System.in)
System.out.println("请输入学号:")
String stuno = sc.nextLine()
System.out.println("请输入姓名:")
String name = sc.nextLine()
System.out.println("请输入年龄:")
String age = sc.nextLine()
//将数据添加在Document中
Element student = root.addElement("student")
student.addAttribute("stuno", stuno)
student.addElement("name").addText(name)
student.addElement("age").addText(age)
//3. 设置格式
OutputFormat format = OutputFormat.createCompactFormat()
format.setIndentSize(4)
format.setNewlines(true)
try {
//4. 保存xml文件
XMLWriter out = new XMLWriter(new FileOutputStream("src/studentinfo.xml"),format)
out.write(doc)
System.out.println("ok!!!")
} catch (Exception e) {
System.out.println("失败!")
}
System.out.println("完成了!")
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)