??
?Element類的getContent()方法返回一個List對象,它包括了一個元素的所有內(nèi)容:注釋、屬性、處理指令、文本和子元素。利用它我們可以遍歷XML文檔。下面的程序來自《java語言與xml教程》
import?org.jdom.*;
import?org.jdom.input.SAXBuilder;
import?java.io.IOException;
import?java.util.*;
public?class?TreePrinter{
???public?static?void?process(Element?element){
??????inspect(element);
??????List?content=element.getContent();//取元素的所有內(nèi)容
??????Iterator?iterator=content.iterator();
??????while(iterator.hasNext()){
?????????Object?o=iterator.next();
?????????if(o?instanceof?Element){//如果是子元素
?????????????Element?child=(Element)o;
?????????????process(child);//遞歸調(diào)用
?????????}else?if(o?instanceof?Comment){//如果是說明
?????????????Comment?c=(Comment)o;
?????????????//System.out.println(c.getText());
????????????//?System.out.println();
??????}
???}
???public?static?void?inspect(Element?element){
????????if(!element.isRootElement()){
???????????System.out.println();
????????}
????????String?qualifiedName=element.getQualifiedName();
????????System.out.println(qualifiedName+":"+element.getText());
????????Namespace?namespace=element.getNamespace();
????????if(namespace!=Namespace.NO_NAMESPACE){
?????????????String?localName=element.getName();
?????????????String?uri=element.getNamespaceURI();
?????????????String?prefix=element.getNamespacePrefix();
?????????????System.out.println("??Local?name:?"+localName);
?????????????System.out.println("??Namespace?URI:?"+uri);
?????????????if(!"".equals(prefix)){
???????????????????System.out.println("??Namespace?prefix:?"+prefix);
?????????????}
?????????}
???????List?attributes=element.getAttributes();
???????if(!attributes.isEmpty()){
????????????Iterator?iterator=attributes.iterator();
????????????while(iterator.hasNext()){
???????????????Attribute?attribute=(Attribute)iterator.next();
???????????????String?name=attribute.getName();
???????????????String?value=attribute.getValue();
???????????????Namespace?attributeNamespace=attribute.getNamespace();
???????????????if(attributeNamespace==Namespace.NO_NAMESPACE){
?????????????????System.out.println("??"+name+?"=\""+value+?"\"");
???????????????}else{
?????????????????String?prefix=attributeNamespace.getPrefix();
?????????????????System.out.println("??"+prefix+":"+name+"=\""+value+"\"");
???????????????}
?????????????}
?????????}
?????????List?namespaces=element.getAdditionalNamespaces();
?????????if(!namespaces.isEmpty()){
????????????Iterator?iterator=namespaces.iterator();
????????????while(iterator.hasNext()){
????????????????Namespace?additional=(Namespace)iterator.next();
????????????????String?uri=additional.getURI();
????????????????String?prefix=additional.getPrefix();
????????????????System.out.println("??xmlns:"+prefix+"=\""+uri+"\"");
?????????????}
??????????}
????}
???????public?static?void?main(String[]?args){
?????????if(args.length<=0){
????????????System.out.println("Usage:?java?TreePrinter?URL");
????????????return;
??????????}
?????????String?url=args[0];
?????????try{
??????????????SAXBuilder?parser=new?SAXBuilder();
??????????????Document?document=parser.build(url);
??????????????process(document.getRootElement());
????????}catch(JDOMException?e){
??????????????System.out.println(url+"?is?not?well-formed.");
????????}catch(IOException?e){
??????????????System.out.println("Due?to?an?IOException,the?parser?could?not?encode?"+url);
????????}
??????}
?}
???運行結(jié)果:
C:\java>java???TreePrinter?sample.xml
HD:
??xmlns:dd="http://www.zzjava.hnzz.net"
??xmlns:ss="http://www.hnzz.net"
disk:
??name="C"
capacity:8G
directories:200
files:1580
disk:
??name="D"
capacity:10G
directories:500
files:3000
用的xml文件是:
<?xml?version="1.0"?encoding="UTF-8"?>
<HD?xmlns:dd="http://www.zzjava.hnzz.net"??xmlns:ss="http://www.hnzz.net"?>
????????<disk?name="C">
????????????????<capacity>8G</capacity>
????????????????<directories>200</directories>
????????????????<files>1580</files>
????????</disk>
????????<disk?name="D">
????????????????<capacity>10G?<!--good-->
????????????????</capacity>
????????????????<directories>500</directories>
????????????????<files>3000</files>
????????</disk>
</HD>
http://blog.iyi.cn/start/2005/01/javaxml.html
http://toney.cnblogs.com/archive/2004/11/20/66178.aspx
posted on 2006-06-20 15:18
船長 閱讀(1499)
評論(1) 編輯 收藏 所屬分類:
J2EE