`
chenzhuo1016
  • 浏览: 26433 次
  • 来自: ...
社区版块
存档分类
最新评论

jdom学习(4)

    博客分类:
  • xml
阅读更多
Jdom使用详解及实例(4)
接上一节:

2、读取xml文档的例子:

java 代码
 
  1. import org.jdom.output.*;  
  2.   
  3. import org.jdom.input.*;  
  4.   
  5. import org.jdom.*;  
  6.   
  7. import java.io.*;  
  8.   
  9. import java.util.*;  
  10.   
  11. public class ReadXML{  
  12.   
  13.     public static void main(String[] args) throws Exception {  
  14.   
  15.         SAXBuilder builder = new SAXBuilder();  
  16.   
  17.         Document read_doc = builder.build("studentinfo.xml");  
  18.   
  19.         Element stu = read_doc.getRootElement();  
  20.   
  21.         List list = stu.getChildren("student");  
  22.   
  23.         for(int i = 0;i < list.size();i++) {  
  24.   
  25.             Element e = (Element)list.get(i);  
  26.   
  27.             String str_number = e.getChildText("number");  
  28.   
  29.             String str_name = e.getChildText("name");  
  30.   
  31.             String str_age = e.getChildText("age");  
  32.   
  33.             System.out.println("---------STUDENT--------------");  
  34.   
  35.             System.out.println("NUMBER:" + str_number);  
  36.   
  37.             System.out.println("NAME:" + str_name);  
  38.   
  39.             System.out.println("AGE:" + str_age);  
  40.   
  41.             System.out.println("------------------------------");  
  42.   
  43.             System.out.println();  
  44.   
  45.         }   
  46.   
  47.        }  
  48.   
  49. }  

3DTD验证的:

java 代码
 
  1. public class XMLWithDTD {  
  2.   
  3.   public void validate()  {  
  4.   
  5.    try {  
  6.   
  7.     SAXBuilder builder = new SAXBuilder(true);  
  8.   
  9.     builder.setFeature("http://xml.org/sax/features/validation";,true);  
  10.   
  11.     Document doc = builder.build(new FileReader("author.xml"));     
  12.   
  13.     System.out.println("搞掂");  
  14.   
  15.     XMLOutputter outputter = new XMLOutputter();  
  16.   
  17.     outputter.output(doc, System.out);  
  18.   
  19.    }catch(Exception e) {  
  20.   
  21.     System.out.println(e);  
  22.   
  23.    }    
  24.   
  25.   }  
  26.   
  27.   public static void main(String args[]) {  
  28.   
  29.    new XMLWithDTD().validate();  
  30.   
  31.   }   
  32.   
  33.  }  

4XML Schema验证的:

java 代码
 
  1. public class XMLWithSchema {  
  2.   
  3.  String xml="test.xml";  
  4.   
  5.  String schema="test-schema.xml";  
  6.   
  7.  public void validate() {  
  8.   
  9.   try {  
  10.   
  11.    SAXBuilder builder = new SAXBuilder(true);  
  12.   
  13.    //指定约束方式为XML schema  
  14.   
  15.    builder.setFeature("http://apache.org/xml/features/validation/schema";,  true);  
  16.   
  17.    //导入schema文件  
  18.   
  19. uilder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation";,schema);  
  20.   
  21.    Document doc = builder.build(new FileReader(xml));     
  22.   
  23.    System.out.println("搞掂");  
  24.   
  25.    XMLOutputter outputter = new XMLOutputter();  
  26.   
  27.    outputter.output(doc, System.out);  
  28.   
  29.   }catch(Exception e) {  
  30.   
  31.    System.out.println("验证失败:"+e);  
  32.   
  33.   }   
  34.   
  35.  }  
  36.   
  37. }  

 上面的程序就指出了要引入的XML Schema文件的位置。

5Xpath例子:

JDOM的关于XPATHapiorg.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文件:

xml 代码
 
  1. xml version="1.0" encoding="ISO-8859-1"?>  
  2. <web-app>  
  3.     <servlet>  
  4.         <servlet-name>snoop<!---->servlet-name>  
  5.         <servlet-class>SnoopServlet<!---->servlet-class>  
  6.     <!---->servlet>  
  7.     <servlet>  
  8.         <servlet-name>file<!---->servlet-name>  
  9.         <servlet-class>ViewFile<!---->servlet-class>  
  10.         <init-param>  
  11.             <param-name>initial<!---->param-name>  
  12.             <param-value>1000<!---->param-value>  
  13.             <description>  
  14.                 The initial value for the counter  <!---->  
  15.             <!---->description>  
  16.         <!---->init-param>  
  17.     <!---->servlet>  
  18.     <servlet-mapping>  
  19.         <servlet-name>mv<!---->servlet-name>  
  20.         <url-pattern>*.wm<!---->url-pattern>  
  21.     <!---->servlet-mapping>  
  22.     <distributed/>  
  23.     <security-role>  
  24.       <role-name>manager<!---->role-name>  
  25.       <role-name>director<!---->role-name>  
  26.       <role-name>president<!---->role-name>  
  27.     <!---->security-role>  
  28. <!---->web-app>  

处理程序:

java 代码
 
  1. import java.io.*;  
  2.   
  3. import java.util.*;   
  4.   
  5. public class XPathReader {       
  6.   
  7.     public static void main(String[] args) throws IOException, JDOMException {  
  8.   
  9.         if (args.length != 1) {  
  10.   
  11.             System.err.println("Usage: java XPathReader web.xml");  
  12.   
  13.             return;  
  14.   
  15.         }  
  16.   
  17.         String filename = args[0];//从命令行输入web.xml  
  18.   
  19.         PrintStream out = System.out;  
  20.   
  21.         SAXBuilder builder = new SAXBuilder();  
  22.   
  23.         Document doc = builder.build(new File(filename));//得到Document对象  
  24.   
  25.    
  26.   
  27.         // Print servlet information  
  28.   
  29.         XPath servletPath = XPath.newInstance("//servlet");//,选择任意路径下servlet元素  
  30.   
  31.         List servlets = servletPath.selectNodes(doc);//返回所有的servlet元素。  
  32.   
  33.         out.println("This WAR has "+ servlets.size() +" registered servlets:");  
  34.   
  35.         Iterator i = servlets.iterator();  
  36.   
  37.         while (i.hasNext()) {//输出servlet信息  
  38.   
  39.             Element servlet = (Element) i.next();  
  40.   
  41.             out.print("\t" + servlet.getChild("servlet-name")  
  42.   
  43.                                     .getTextTrim() +  
  44.   
  45.                       " for " + servlet.getChild("servlet-class")  
  46.   
  47.                                        .getTextTrim());  
  48.   
  49.             List initParams = servlet.getChildren("init-param");  
  50.   
  51.             out.println(" (it has " + initParams.size() + " init params)");   
  52.   
  53.         }               
  54.   
  55.         // Print security role information  
  56.   
  57.         XPath rolePath = XPath.newInstance("//security-role/role-name/text()");  
  58.   
  59.         List roleNames = rolePath.selectNodes(doc);//得到所有的角色名  
  60.   
  61.         if (roleNames.size() == 0) {  
  62.   
  63.             out.println("This WAR contains no roles");  
  64.   
  65.         } else {  
  66.   
  67.             out.println("This WAR contains " + roleNames.size() + " roles:");  
  68.   
  69.             i = roleNames.iterator();  
  70.   
  71.             while (i.hasNext()) {//输出角色名  
  72.   
  73.                 out.println("\t" + ((Text)i.next()).getTextTrim());  
  74.   
  75.             }  
  76.   
  77.         }  
  78.   
  79.     }      
  80.   
  81. }   

输出结果:

C:\java>java   XPathReader web.xml

This WAR has 2 registered servlets:

        snoop for SnoopServlet (it has 0 init params)

        file for ViewFile (it has 1 init params)

This WAR contains 3 roles:

        manager

        director

        president

注: 要使用XPath必须导入包:saxpath.jar,jaxen-core.jar,jaxen-jdom.jar!!!!

分享到:
评论

相关推荐

    jdom学习读取xml文件

    jdom学习读取xml文件资料小列子,非常简单明了。

    jdom学习读取xml文件.files

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标准格式,特别是在Java应用程序和Spring框架中...通过阅读提供的`jdom.doc`文档和`jdom学习读取xml文件.files`中的示例,你可以更全面地掌握这些知识。

    JDom学习资料

    **JDom学习资料详解** JDom,全称为Java Document Object Model,是一款专为Java设计的DOM(Document Object Model)解析库。它允许开发者以一种高效、便捷的方式处理XML文档,提供了一种基于Java的API来创建、修改...

    JDOM 帮助文档!

    **JDOM:XML处理的利器** 在信息技术领域,XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、文档存储等场景。为了方便开发者处理XML文档,各种解析库应运而生,其中...

    jdom源码+jdom.jar

    源码文件jdom-src.zip则提供了JDOM的完整源代码,这对于学习和理解JDOM的工作原理,或者进行定制和扩展非常有用。源代码包含了大量的注释,可以帮助开发者深入理解JDOM的内部机制,例如如何解析XML文档,如何构建XML...

    DOM JDOM dom4j 实例源码

    DOM(Document Object Model)是W3C制定的一种标准,它为XML和HTML文档提供了一种...在2Code和3Code这两个文件中,可能包含了这些库的具体使用示例,学习和理解这些源码可以帮助你更好地掌握DOM、JDOM和dom4j的用法。

    jdom+dom4j

    在实际项目中,如果XML文件较小,对解析速度要求不高,JDOM可能是一个不错的选择,因为它的API设计直观,学习成本较低。然而,对于处理大型XML文件或需要频繁查询的场景,DOM4J的效率和灵活性可能更有优势。 **总结...

    jdom的两种版本jar包集合

    1. **jdom-2.0.6-javadoc.jar**: 包含了JDOM 2.0.6版本的API文档,开发者可以通过查看这个JAR来了解JDOM的所有类、接口和方法,便于学习和使用。 2. **jdom-2.0.6-sources.jar**: 提供了JDOM 2.0.6的源代码,开发者...

    jdom.jar与dom4j.jar包

    为了处理XML文档,开发者经常需要依赖特定的库,如JDOM和DOM4J。这两个库都是Java中常用的XML解析器,提供了不同的方法来读取、写入、操作和解析XML文档。下面将详细讨论这两个库及其在XML处理中的应用。 **JDOM** ...

    jdom-1.1.2&jdom帮助文档

    对于开发者来说,这是了解和学习 JDOM 的重要资源。文档详细解释了每个类、接口和方法的用法,帮助开发者快速上手。 总结,JDOM 1.1.2 是一个强大且易于使用的 XML 处理库,特别适合 Java 开发者。其提供的 API ...

    JDOM1.1(Jdom文档)

    4. **源码及API文档**:JDOM1.1不仅包含了jar包,还提供了CHM格式的API文档和源代码,方便开发者学习和调试。 使用JDOM1.1进行XML操作的基本步骤: 1. **解析XML**:使用SAXBuilder类解析XML文件,将其转换为...

    java org.jdom 包下载

    1. **jdom-2.0.5-javadoc.jar**:这是JDOM的API文档,开发者可以通过查看这个JAR文件中的文档来了解每个类和方法的详细信息,这对于学习和使用JDOM非常有帮助。 2. **jdom-2.0.5-sources.jar**:包含了JDOM库的源...

    jdom+log4j jar包

    使用Jdom解析和组织XML 文件确实很方便,供初学者参考,希望这个对大家学习Jdom 有所帮助。通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX ...

    jdom.rar内含多个jdom包

    JDOM,全称为Java Document Object Model,是一种专为Java设计的XML处理库。它提供了一种方便、高效的方式来创建、构建、修改和读取XML文档。JDOM的主要目标是简化XML处理,使得开发者能更直观地操作XML数据,而无需...

    Jdom教程 Jdom教程.pdf

    ### JDOM教程知识点详解 #### 一、JDOM简介 ...通过上述知识点的学习,我们可以了解到JDOM的基本使用方法,包括创建XML文档、解析XML文档以及使用XPath进行查询等功能。这对于开发者来说是非常有价值的工具。

    jdom英文帮助文档

    《JDOM英文帮助文档》是Java开发者不可或缺的参考资料,尤其对于初学者而言,它提供了全面且深入的JDOM库知识。JDOM,全称为Java Document Object Model,是Java平台上的...总之,这份文档是学习和应用JDOM的宝贵资源。

    dom4j和jdom的jar包

    DOM4J的API设计简洁,易于学习和使用,使得开发人员可以方便地进行XML文档的读写、遍历、修改等操作。 JDOM,另一方面,是专门为Java设计的一个XML DOM实现。JDOM 2.0.5版本是一个高性能、内存效率高的库,它提供了...

    jdom的源代码文档

    总的来说,通过对JDOM源代码的深入学习,不仅可以提升你对XML处理的理解,还能帮助你更好地利用JDOM进行XML数据的处理,提高开发效率,避免潜在的问题。无论你是初次接触JDOM,还是希望深化对它的认识,研究源代码都...

    dom4j-1.6.1 和 jdom

    为了处理XML文档,Java提供了多种库,其中dom4j和JDOM是两个常用的选择。这两个库都是Java API,允许开发者对XML进行读取、解析、创建和修改操作。 **dom4j-1.6.1** dom4j是一款功能强大且灵活的Java XML库,它提供...

    jdom的帮助文档 jdom的帮助文档

    在“jdom的帮助文档”中,我们可以深入学习JDOM的核心概念和使用方法。首先,JDOM通过构建树形结构来表示XML文档,每个节点可以代表XML文档的元素、属性、文本、注释等。这种结构化表示方式使得我们可以方便地遍历和...

Global site tag (gtag.js) - Google Analytics