XML(3)
时间:2010-07-19
下面是读入一个xml文档,并把它又输出的例子:
import java.io.*;
import org.Jdom.*;
import org.Jdom.input.*;
import org.Jdom.output.*;
public class PrettyPrinter {
public static void main(String[] args) {
// Assume filename argument
String filename = args[0];
try {
// Build the document with SAX and Xerces, no validation
SAXBuilder builder = new SAXBuilder();
// Create the document
Document doc = builder.build(new File(filename));
// Output the document, use standard formatter
XMLOutputter fmt = new XMLOutputter();
fmt.output(doc, System.out);
} catch (Exception e) {
e.printStackTrace();
}
}
}
读取文档类型
现在,让我们来看一下怎么读取文档的详细内容。许多XML文档都有的一个东西是文档类型,在Jdom中用DocType类来描述。万一你不是XML方面的专家(嘿,不用灰心,你就是我们所要面向的听众),一个文档类型的声明看起来象下边的样子:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
DOCTYPE后边的第一个词揭示文档被强制类型的名字,PUBLIC后边的词是文档类型的公共属性,最后一个词是文档类型的系统属性。文档属性可以上通过文档的getDocType()方法获得,DocType类提供了一组获得文档类型声明的方法。
DocType docType = doc.getDocType();
System.out.println("Element: " + docType.getElementName());
System.out.println("Public ID: " + docType.getPublicID());
System.out.println("System ID: " + docType.getSystemID());
读取文档数据
每一个XML文档必须有一个根元素。这个元素是访问所有XML文档内部信息的起始点。例如:这个文档片段用<web-app>作为根元素:
<web-app id="demo">
<description>Gotta fit servlets in somewhere!</description>
<distributable/>
</web-app>
根元素的实例可以在文档中直接获得。
Element webapp = doc.getRootElement();
这样,你就可以访问这个元素的属性(如上边的id)内容和子节点元素。
用JDom轻松整合Java和XML(4)
时间:2010-07-19
访问子节点
XML文档是树型结构的,任何一个元素都有可能包含任何数量的子元素。例如:<web-app>元素有<description>和 <distributable>作为子节点元素。你可以通过很多方法获得一个元素的子元素,getChild()如果没有子元素的话返回NULL。
List getChildren(); // return all children
List getChildren(String name); // return all children by name
Element getChild(String name); // return first child by name
示例:
// Get a List of all direct children as Element objects
List allChildren = element.getChildren();
out.println("First kid: " + ((Element)allChildren.get(0)).getName());
// Get a list of all direct children with a given name
List namedChildren = element.getChildren("name");
// Get a list of the first kid with a given name
Element kid = element.getChild("name");
当文档结构事先知道的情况下,getchild()方法很容易快速的获得嵌套的元素。给出一个XML文档:
<?xml version="1.0"?>
<linux:config>
<gui>
<window-manager>
<name>Enlightenment</name>
<version>0.16.2<
|