`
pharaohsprince
  • 浏览: 295679 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

《JDOM操作XML文件》的补充(增加搜索查询功能)

阅读更多

    前文《JDOM操作XML文件》发表后很多网友反响不错~但是没有包含搜索查询单一功能。
今天,补充一下。
    对XML的内容做查询,比较传统的方法是遍历,但是,这种原始的方法,在遇到太多子节点(>5层)的时候
效率就是问题了~~所以,法老这次采用的是使用JDOM和XPATH结合查询的办法。
    原文地址:http://blog.csdn.net/pharaohsprince/archive/2006/01/12/577344.aspx
代码片段如下:

 /**
  * 搜索XML文件信息
  */
public Vector SelXML(HttpServletRequest request) throws Exception {
  Vector xmlVector = null;
  FileInputStream fi = null;
  XmlBean findxml = null;
  try {
   request.setCharacterEncoding("GBK");// 内码转换
   String bookname = request.getParameter("bookname");
   String path = request.getParameter("path");
   fi = new FileInputStream(path);
   xmlVector = new Vector();
   SAXBuilder sb = new SAXBuilder();
   Document doc = sb.build(fi);
   Element root = doc.getRootElement();
   XPath xpath = XPath.newInstance("//书//书名[text()='"+bookname+"']");   
   /**
    * 查询出记录
    */
   List find = xpath.selectNodes(root); 
   Iterator iter = find.iterator();
   while (iter.hasNext()) {  
   Element item = (Element) iter.next();
   Element itemparent = item.getParentElement();//得到其父节点
//   System.err.println(item.getText());
//   System.err.println("ID:"+itemparent.getAttributeValue("id"));
//   System.err.println("书名:"+itemparent.getChild("书名").getText());
//   System.err.println("作者:"+itemparent.getChild("作者").getText());
//   System.err.println("--------------");  
   findxml = new XmlBean();
   findxml.setbookname(itemparent.getChild("书名").getText());
   findxml.setauthor(itemparent.getChild("作者").getText());
   findxml.setpub(itemparent.getChild("出版社").getText());
   findxml.setprice(itemparent.getChild("价格").getText());
   findxml.setpubdate(itemparent.getChild("出版日期").getText());
   xmlVector.add(findxml);
   }

  } catch (Exception e) {
   System.err.println(e + "error");
  } finally {
   try {
    fi.close();
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
  return xmlVector;
 }

test.jsp中增加的代码
<form method="POST" action="xmlaction.jsp">
  <p align="center"><br>
    书 名:<input type="text" name="bookname" size="20"><input type="hidden" name="act" value="search"><br>
  </p>
  <input type="hidden" name="path" value="<%=path%>">
<p align="center"><input type="submit" value="查询" name="B1">
<input
 type="reset" value="重置" name="B2"></p>
</form>

xmlaction.jsp 中增加的代码
 else if (request.getParameter("act") != null
    && request.getParameter("act").equals("search")) {
   XmlBean xml = new XmlBean();
      Vector selxml = xml.SelXML(request);
      out.println("查询结果:"+selxml.size()+"条记录<br>-------------------<br>");
      for (int i = 0; i < selxml.size(); i++) {
   xml = (XmlBean) selxml.elementAt(i);
    out.println("书名:"+xml.getbookname()+"<br>");
    out.println("作者:"+xml.getauthor()+"<br>");
    out.println("出版社:"+xml.getpub()+"<br>");
    out.println("价格:"+xml.getprice()+"<br>");
    out.println("出版日期:"+xml.getpubdate()+"<br><br>");
    }
   out.println("<p align='center'><br><br>查询成功<br><br><a href='test.jsp'>返回</a>");
  }



分享到:
评论

相关推荐

    java Excel转化xml

    本文将详细讲解如何使用 Java 语言实现从 Excel 文件到 XML 文件的转换,并提供一份基于给定代码片段的详细分析与补充。 #### 核心知识点 1. **Java API 使用** - `org.apache.poi`: 这是用于读取和写入 ...

    XML学习手册(包括xml数据库设计)

    "Java&xml学习笔记.doc"则可能探讨了如何在Java应用程序中使用XML,包括解析XML、生成XML,以及利用JAXB、JDOM、DOM4J等库进行操作。"XML 数据库设计"很可能是关于如何设计和使用XML数据库的详细指南,涵盖了XML数据...

    解析xml的所有是包

    尽管XercesImpl.jar已经包含了核心解析功能,但这些额外的jar包可能包含特定版本的依赖或补充功能。 在实际开发中,根据项目需求,开发者可能会选择其中的一个或多个库来解析XML。例如,如果只需要简单的读取和写入...

    XML编程技术大全,学的容易,好用

    而SAX解析器采用事件驱动模型,逐行读取文档,适合处理大型XML文件,以避免内存消耗。 在实际应用中,我们通常会使用编程语言(如Java、Python或C#)的库来处理XML。例如,Java中的JAXB(Java Architecture for XML...

    SAXreader需要的jar包.zip

    在这个“SAXreader需要的jar包.zip”压缩文件中,包含了两个重要的第三方库:dom4j-2.1.3.jar和jaxen-1.1.6.jar,它们是用来增强和补充XML解析功能的。 dom4j是一个非常灵活的Java XML API,它提供了包括读取、写入...

    基于Java的源码-EPUB类库 Epublib.zip

    EPUB文件本质上是一个ZIP压缩包,包含XML文件(如OPF文件——元数据容器,NCX文件——导航文件)和HTML、CSS、图像等资源。Epublib库提供了处理这些组件的API,使得开发者能够方便地进行EPUB电子书的生成和解析。 1...

    JAVA上百实例源码以及开源项目源代码

    Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...

    Dom.rar_DOM

    8. **DOM2级和DOM3级**:DOM的后续版本增加了更多的功能,如样式操作、XML支持、事件接口等。 9. **性能优化**:频繁的DOM操作会降低页面性能,因此应尽量减少不必要的操作,使用文档碎片(`document....

    repository1

    通过将项目配置简化为一个或多个XML文件,Maven使得项目构建和维护变得更加容易。 在"repository1"中,我们发现了一系列关键的Java库: 1. **commons-configuration**:Apache Commons Configuration是Apache软件...

    java试题g.pdf

    16. 其他技术:文档还提到了`CORBA`(通用对象请求代理体系结构)用于远程过程调用,`XML`和`jdom`用于处理XML文档。 由于文档内容是通过OCR扫描获得的,存在一些错误和不连贯的地方,我已尽力整理并解释文档内容,...

    mailparser:Jira 邮件解析器插件

    此外,Java的XML和JSON解析库(如JDOM、DOM4J和Jackson)可以帮助解析邮件中的结构化数据。利用Java的这些特性,开发者可以构建出高效、稳定的邮件处理系统。 **mailparser-master文件内容** "mailparser-master...

Global site tag (gtag.js) - Google Analytics