public
class WriteXML
{
public
void BuildXML()
throws Exception
{
Element root,student,number,name,age;
root =
new Element(student-info); //生成根元素:student-info
student =
new Element(student); //生成元素:student,该元素中将包含元素number,name,age
number =
new Element(number);
name =
new Element(name);
age =
new Element(age);
Document doc =
new Document(root); //将根元素植入文档doc中
number.setText(001);
name.setText(lnman);
age.setText(24);
student.addContent(number);
student.addContent(name);
student.addContent(age);
root.addContent(student);
Format format = Format.getCompactFormat();
format.setEncoding(gb2312); //设置xml文件的字符为gb2312
format.setIndent( ); //设置xml文件的缩进为4个空格
XMLOutputter XMLOut =
new XMLOutputter(format);//在元素后换行,每一层元素缩排四格
XMLOut.output(doc,
new FileOutputStream(studentinfo.xml));
}
public
static
void main(String[] args)
throws Exception
{
WriteXML w =
new WriteXML();
System.out.println(Now we build an XML document …..);
w.BuildXML();
System.out.println(finished!);
}
}
生成的xml文档为:
001
lnman
24
读取xml文档的例子:
/*
* Created on 2004-10-9
*
*用jdom读取xml文档的例子
*
*/
/**
*
@author lnman
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
import org.jdom.output.*;
import org.jdom.input.*;
import org.jdom.*;
import java.io.*;
import java.util.*;
public
class ReadXML
{
public
static
void main(String[] args)
throws Exception
{
SAXBuilder builder =
new SAXBuilder();
Document read_doc = builder.build(studentinfo.xml);
Element stu = read_doc.getRootElement();
List list = stu.getChildren(student);
for(
int i = 0;i
{
Element e = (Element)list.get(i);
String str_number = e.getChildText(number);
String str_name = e.getChildText(name);
String str_age = e.getChildText(age);
System.out.println(———STUDENT————–);
System.out.println(NUMBER: + str_number);
System.out.println(NAME: + str_name);
System.out.println(AGE: + str_age);
System.out.println(——————————);
System.out.println();
}
}
}
Xpath例子:
JDOM的关于XPATH的api在org.jdom.xpath这个包里。这个包下,有一个抽象类XPath.java和实现类JaxenXPath.java, 使用时先用XPath类的静态方法newInstance(String xpath)得到XPath对象,然后调用它的selectNodes(Object context)方法或selectSingleNode(Object context)方法,前者根据xpath语句返回一组节点(List对象);后者根据一个xpath语句返回符合条件的第一个节点(Object类型)。请看jdom-1.0自带的范例程序:
它分析在web.xml文件中的注册的servlet的个数及参数个数,并输出角色名。
web.xml文件:
–>
snoop
SnoopServlet
file
ViewFile
initial
1000
The initial value for the counter
mv
*.wm
manager
director
president
处理程序:
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
import org.jdom.xpath.*;
/**
* XPathReader
demonstrates how to
* read a Servlet 2.2 Web Archive file using XPath.
*
*
* @author Jason Hunter
* @version 1.0
*/
public class XPathReader {
public static void main(String[] args) throws IOException, JDOMException {
if (args.length != 1) {
System.err.println(Usage: java XPathReader web.xml);
return;
}
String filename = args[0];//从命令行输入web.xml
PrintStream out = System.out;
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File(filename));//得到Document对象
// Print servlet information
XPath servletPath = XPath.newInstance(//servlet);//,选择任意路径下servlet元素
List servlets = servletPath.selectNodes(doc);//返回所有的servlet元素。
out.println(This WAR has + servlets.size() + registered servlets:);
Iterator i = servlets.iterator();
while (i.hasNext()) {//输出servlet信息
Element servlet = (Element) i.next();
out.print(//t + servlet.getChild(servlet-name)
.getTextTrim() +
for + servlet.getChild(servlet-class)