(Step 2)JDOM操作XML范例
来源:互联网 发布:mac 搭建软件开发环境 编辑:程序博客网 时间:2024/05/23 00:41
这是一个示例,运行时先加入相关的API包。
需要进入的类:
import org.jdom.Attribute;import org.jdom.Comment;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
到资源下载中下载JDOM_XML.zip 或自行到网上下载相关的包
注意看注释内容理解
/**
* This class runs all the example code from the article. There is a method
* for each listing. The listing that each method represents is listed in the
* javadoc for the method. This class also has a main method that will allow
* you to execute any of the listings. Run this class with no parameters to
* get usage information.
* This class was tested with:
* xerces version 1.3.0
* xalan version 2.0.1
* jdom version beta6
* jdk version 1.2
*
* @author Harry Evans (harry@tralfamadore.com)
* @author Wes Biggs (wes@tralfamadore.com)
*/
public class JDomDemo {
/**
* Read and parse an xml document from the file at car.xml.
* This method corresponds to the code in Listing 7.
* @return the JDOM document parsed from the file.
*/
public static Document readDocument() {
try {
SAXBuilder builder = new SAXBuilder();
Document anotherDocument = null;
try {
anotherDocument = builder.build(new File("car.xml"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return anotherDocument;
} catch(JDOMException e) {
e.printStackTrace();
} catch(NullPointerException e) {
e.printStackTrace();
}
return null;
}
/**
* This method creates a JDOM document with elements that represent the
* properties of a car.
* This method corresponds to Listing 2.
* @return a JDOM Document that represents the properties of a car.
*/
public static Document createDocument() {
// Create the root element
Element carElement = new Element("car");
//create the document
Document myDocument = new Document(carElement);
//add an attribute to the root element
carElement.setAttribute(new Attribute("vin", "123fhg5869705iop90"));
//add a comment
carElement.addContent(new Comment("Description of a car"));
//add some child elements
/*
* Note that this is the first approach to adding an element and
* textual content. The second approach is commented out.
*/
Element make = new Element("make");
make.addContent("Toyota");
carElement.addContent(make);
//carElement.addContent(new Element("make").addContent("Toyota"));
//add some more elements
carElement.addContent(new Element("model").addContent("Celica"));
carElement.addContent(new Element("year").addContent("1997"));
carElement.addContent(new Element("color").addContent("green"));
carElement.addContent(new Element("license").addContent("1ABC234").setAttribute("state", "CA"));
return myDocument;
}
/**
* This method accesses a child element of the root element of the
* document built in listing 2 with the createDocument method.
* This method corresponds to Listing 3.
* @param myDocument the JDOM document built from Listing 2
*/
public static void accessChildElement(Document myDocument) {
//some setup
Element carElement = myDocument.getRootElement();
//Access a child element
Element yearElement = carElement.getChild("year");
//show success or failure
if(yearElement != null) {
System.out.println("Here is the element we found: " +
yearElement.getName() + ". Its content: " +
yearElement.getText() + "/n");
} else {
System.out.println("Something is wrong. We did not find a year Element");
}
}
/**
* This method removes a child element from a document. The document
* should be of the format created in Listing 2.
* This method corresponds to Listin 4.
* @param myDocument the JDOM document built from Listing 2.
*/
public static void removeChildElement(Document myDocument) {
//some setup
System.out.println("About to remove the year element./nThe current document:");
outputDocument(myDocument);
Element carElement = myDocument.getRootElement();
//remove a child Element
boolean removed = carElement.removeChild("year");
//show success or failure
if(removed) {
System.out.println("Here is the modified document without year:");
outputDocument(myDocument);
} else {
System.out.println("Something happened. We were unable to remove the year element.");
}
}
/**
* This method shows how to use XMLOutputter to output a JDOM document to
* the stdout.
* This method corresponds to Listing 5.
* @param myDocument the JDOM document built from Listing 2.
*/
public static void outputDocument(Document myDocument) {
try {
XMLOutputter outputter = new XMLOutputter(" ", true);
outputter.output(myDocument, System.out);
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
/**
* This method shows how to use XMLOutputter to output a JDOM document to
* a file located at xml/myFile.xml.
* This method corresponds to Listing 6.
* @param myDocument the JDOM document built from Listing 2.
*/
public static void outputDocumentToFile(Document myDocument) {
//setup this like outputDocument
try {
XMLOutputter outputter = new XMLOutputter(" ", true);
//output to a file
FileWriter writer = new FileWriter("car.xml");
outputter.output(myDocument, writer);
writer.close();
} catch(java.io.IOException e) {
e.printStackTrace();
}
}
/**
* This method takes a JDOM document in memory, an xsl file at car.xsl,
* and outputs the results to stdout.
* This method corresponds to Listing 9.
* @param myDocument the JDOM document built from Listing 2.
* @throws IOException
*/
public static void executeXSL(Document myDocument) throws IOException {
try {
TransformerFactory tFactory = TransformerFactory.newInstance();
// Make the input sources for the XML and XSLT documents
org.jdom.output.DOMOutputter outputter = new org.jdom.output.DOMOutputter();
org.w3c.dom.Document domDocument = outputter.output(myDocument);
javax.xml.transform.Source xmlSource = new javax.xml.transform.dom.DOMSource(domDocument);
StreamSource xsltSource = new StreamSource(new FileInputStream("car.xsl"));
//Make the output result for the finished document
/*
* Note that here we are just going to output the results to the
* System.out, since we don't actually have a HTTPResponse object
* in this example
*/
//StreamResult xmlResult = new StreamResult(response.getOutputStream());
FileWriter writer = new FileWriter("car.html");
StreamResult xmlResult = new StreamResult(writer);
//StreamResult xmlResult = new StreamResult(System.out);
//Get a XSLT transformer
Transformer transformer = tFactory.newTransformer(xsltSource);
//do the transform
transformer.transform(xmlSource, xmlResult);
} catch(FileNotFoundException e) {
e.printStackTrace();
} catch(TransformerConfigurationException e) {
e.printStackTrace();
} catch(TransformerException e) {
e.printStackTrace();
} catch(org.jdom.JDOMException e) {
e.printStackTrace();
}
}
/**
* Main method that allows the various methods to be used.
* It takes a single command line parameter. If none are
* specified, or the parameter is not understood, it prints
* its usage.
* @throws IOException
*/
public static void main(String argv[]) throws IOException {
String command = "xsl";
if(command.equals("create")) outputDocument(createDocument());
else if(command.equals("access")) accessChildElement(createDocument());
else if(command.equals("remove")) removeChildElement(createDocument());
else if(command.equals("output")) outputDocument(createDocument());
else if(command.equals("file")) outputDocumentToFile(createDocument());
else if(command.equals("read")) outputDocument(readDocument());
else if(command.equals("xsl")) executeXSL(createDocument());
else {
System.out.println(command + " is not a valid option.");
printUsage();
}
}
/**
* Convience method to print the usage options for the class.
*/
public static void printUsage() {
System.out.println("Usage: Article [option] /n where option is one of the following:");
System.out.println(" create - create a document as shown in Listing 2");
System.out.println(" access - access a child element as shown in Listing 3");
System.out.println(" remove - remove a child element as shown in Listing 4");
System.out.println(" output - output a document to the console as shown in Listing 5");
System.out.println(" file - output a document to xml/myFile.xml as shown in Listing 6");
System.out.println(" read - parse a document from xml/sample.xml as shown in Listing 7");
System.out.println(" xsl - transform a document as shown in Listing 9");
}
}
-----------------------------------------------------------------------------------------------
car.xml
<?xml version="1.0" encoding="UTF-8"?>
<car vin="123fhg5869705iop90">
<!--Description of a car-->
<make>Toyota</make>
<model>Celica</model>
<year>1997</year>
<color>green</color>
<license state="CA">1ABC234</license>
</car>
car.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/car">
<html>
<head>
<title><xsl:value-of select="make"/> <xsl:value-of select="model"/></title>
</head>
<body>
<h1><xsl:value-of select="make"/></h1><br />
<h2><xsl:value-of select="model"/></h2><br />
<table border="0">
<tr><td>VIN:</td><td><xsl:value-of select="@vin"/></td></tr>
<tr><td>Year:</td><td><xsl:value-of select="year"/></td></tr>
<tr><td>Color:</td><td><xsl:value-of select="color"/></td></tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
car.html
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ToyotaCelica</title>
</head>
<body>
<h1>Toyota</h1>
<br>
<h2>Celica</h2>
<br>
<table border="0">
<tr>
<td>VIN:</td><td>123fhg5869705iop90</td>
</tr>
<tr>
<td>Year:</td><td>1997</td>
</tr>
<tr>
<td>Color:</td><td>green</td>
</tr>
</table>
</body>
</html>
- (Step 2)JDOM操作XML范例
- (Step 3)JDOM操作XML之(Sonnet示例)
- JDOM操作XML例
- JDOM操作XML文件
- JDOM操作XML文件
- JDOM操作XML文件
- JDOM操作XML文件
- JDOM操作XML文件
- 使用JDom操作XML
- jdom操作xml
- JDOM操作XML
- JDOM操作XML
- jdom操作xml
- jdom操作xml文件
- JDOM 操作XML
- jdom操作Xml示例
- Jdom 操作XML
- JDOM、Dom4j操作XML
- 收集的一些有用的好玩的控件!
- JBOSS5的安装
- 在c#中,释放本机ip再重新获取ip
- Oracle 10g exp/imp导出导入工具的使用
- [转贴] Windows编程和面向对象技术 chap1
- (Step 2)JDOM操作XML范例
- 小段代码助记留言
- 是什么造成了weblogic server log文件里的java.io.exception
- 如何在C#中获得IP?
- Server.MapPath(path)的使用
- 北京2008奥运会普通纪念币 帮朋友卖了
- (Step 3)JDOM操作XML之(Sonnet示例)
- WCF Bindings
- 软件测试经验(个人总结)-在摸索中成长