jdom学习(4)

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>snoopservlet-name>  
  5.         <servlet-class>SnoopServletservlet-class>  
  6.     servlet>  
  7.     <servlet>  
  8.         <servlet-name>fileservlet-name>  
  9.         <servlet-class>ViewFileservlet-class>  
  10.         <init-param>  
  11.             <param-name>initialparam-name>  
  12.             <param-value>1000param-value>  
  13.             <description>  
  14.                 The initial value for the counter    
  15.             description>  
  16.         init-param>  
  17.     servlet>  
  18.     <servlet-mapping>  
  19.         <servlet-name>mvservlet-name>  
  20.         <url-pattern>*.wmurl-pattern>  
  21.     servlet-mapping>  
  22.     <distributed/>  
  23.     <security-role>  
  24.       <role-name>managerrole-name>  
  25.       <role-name>directorrole-name>  
  26.       <role-name>presidentrole-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!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
水资源是人类社会的宝贵财富,在生活、工农业生产中是不可缺少的。随着世界人口的增长及工农业生产的发展,需水量也在日益增长,水已经变得比以往任何时候都要珍贵。但是,由于人类的生产和生活,导致水体的污染,水质恶化,使有限的水资源更加紧张。长期以来,油类物质(石油类物质和动植物油)一直是水和土壤中的重要污染源。它不仅对人的身体健康带来极大危害,而且使水质恶化,严重破坏水体生态平衡。因此各国都加强了油类物质对水体和土壤的污染的治理。对于水中油含量的检测,我国处于落后阶段,与国际先进水平存在差距,所以难以满足当今技术水平的要求。为了取得具有代表性的正确数据,使分析数据具有与现代测试技术水平相应的准确性和先进性,不断提高分析成果的可比性和应用效果,检测的方法和仪器是非常重要的。只有保证了这两方面才能保证快速和准确地测量出水中油类污染物含量,以达到保护和治理水污染的目的。开展水中油污染检测方法、技术和检测设备的研究,是提高水污染检测的一条重要措施。通过本课题的研究,探索出一套适合我国国情的水质污染现场检测技术和检测设备,具有广泛的应用前景和科学研究价值。 本课题针对我国水体的油污染,探索一套检测油污染的可行方案和方法,利用非分散红外光度法技术,开发研制具有自主知识产权的适合国情的适于野外便携式的测油仪。利用此仪器,可以检测出被测水样中亚甲基、甲基物质和动植物油脂的污染物含量,为我国众多的环境检测站点监测水体的油污染状况提供依据。
### 内容概要 《计算机试卷1》是一份综合性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适合准备计算机相关竞赛的学生,作为强化训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值