`
2277259257
  • 浏览: 497598 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

web开发总结----xml的写入、读取---1

 
阅读更多

两种解析方式:
  DOM(Document Object Model 文档对象模型)
  关键字:树(Document)
  优点: 把 xml 文件在内存中构造树形结构,可以遍历和修改节点
  缺点: 如果文件比较大,内存有压力,解析的时间会比较长
  SAX(Simple API for Xml 基于 XML 的简单 API)
  关键字:流(Stream)
  把 xml 文件作为输入流,触发标记开始,内容开始,标记结束等动作
  优点: 解析可以立即开始,速度快,没有内存压力
  缺点: 丌能对节点做修改
3)  JDOM / DOM4J :目前市场上常用的 2 种解析 XML 文件的 API
  dom4j-1.6.1.jar  结合了 DOM 和 SAX 两种解析方式的优点

 

准备:导入dom4j-1.6.1.jar  包

 

读取XML文件(按照文件的格式读取内容):--------------------------------------

 

public Static void readBook(String filename){

   SAXReader  reader =new SAXReader(); //解析器

   File   file=new  File(filename); //指定xml文件

   try{

        Document  doc  =reader.read(file); //开始解析,建立树形结构并返回

        Element     rootElmt=doc.getRootElement(); //获得根元素:书籍列表

        List  list= rootElmt.elements("武侠小说"); //获得所有武侠小说的元素集合

        parseNovel(list);

        List   list2= rootElmt.elements("computer_book"); //获得所有computer_book的元素集合

         parseNovel(list2);

   }catch(DocumentException  e){

      e.printStackTrace();

   }

 

}

 

public Static void parseNovel(List  list){

   Iterator  it =list.iterator();

   while(it.hasNext()){

      Element  novelElmt =(Element)it.next(); ----取出元素

      String bookname=novelElmt.elementText("书名"); ---读取元素的内容

      String editor=novelElmt.elementText("作者");

      String price=novelElmt.elementText("价格");

       ...

      //取出元素的所有属性

      List  attrList= novelElmt.attributes();==Iterator  attrList =novelElmt.attributeIterator();

      Iterator  attrIt =attrList.iterator();

      while(attrIt.hasNext()){

          Attribute  attr = (Attribute)attrIt.next();

          System.out.println(attr.getName() + "=" + attr.getValue());

      }

   }

}

 

 

写XML文件:-------------------------------------------------------------

常用 API 方法:
1)  给元素增加子元素: elmt.addElement( "标记名称" ) ;
2)  给元素增加属性:  elmt.addAttribute( "属性名" , "属性值" ) ;
3)  给叶子元素设值:  elmt.setText( "元素值" ) ;

 

/***************************内存中构建document文档对象***********************************/

创建一个如图的xml文件:

 

filename.xml:本例文件是已手动建好的空文件(可在程序中生成指定路径的空文件)

public static void builXml(String filename){

   //数据源(也可是数据库查询的一个集合对象)

   String[][] books ={ 

       {"1001","武侠","天龙八部","金庸","60","1965","zh"},

       {"1002","科幻","哈利波特","rowLing","86","1969","en"},

        ....

    }

 

    //创建一个空的文档对象

    Document  doc =DocumentHelper.createDocument();

    //创建根元素

    Element    rootElmt=doc.addElement("booklist");

    //增加每本书(每条数据)的元素

    for(String[] book : books){

         Element  bookElmt = rootElmt.addElement("book");

         //增加每本书的子元素(每条数据的子元素)

         Element  titleElmt = bookElmt.addElement("title");

         Element  authorElmt = bookElmt.addElement("author");

         Element  priceElmt = bookElmt.addElement("price");

         Element  yearElmt = bookElmt.addElement("year");

 

         //给子元素添加数据

         titleElmt.setText(book[2]);

         authorElmt.setText(book[3]);

         priceElmt .setText(book[4]);

         yearElmt .setText(book[5]);

 

         //给book元素增加两个属性:isbn="1001"  calalog="武侠"

         bookElmt.addAttribute("isbn",book[0]);

         bookElmt.addAttribute("calalog",book[1]);

 

         //给title元素增加一个属性:lang="zh"

         titleElmt.addAttribute("lang",book[6]);

     }

     outputXml(doc,filename);

}

 /*********************输出document文档对象到指定位置的xml文件****************************************/

 private  static  void  outputXml(Document  coc ,String  filename){

      try{

           //创建一个java.io包中的FileWriter对象,指定要生成的目标文件

           FileWriter  fw = new  FileWriter(filename);

 

           //指定xml文件的输出格式

           OutputFormat  format = OutputFormat.createPrettyPrint();

            format.setEncoding("utf-8");

          

            //写xml文件到操作系统

           XMLWriter  xmlWriter = new XMLWriter(fw , format);

           xmlWriter.write(doc);

           xmlWriter.close();

      }catch(IOException e){

           e.printStackTrace();

      }

}

 

 XML文件中搜索某个节点的值(按照文件的格式读取内容):--------------

1)  XPath:在 XML 文件中查找或定位信息的语言:XPath 可以通过元素/属性/值来定位或导航
2)  节点(Node): 相当于 XML 文件中的元素
3)  指定条件定位元素的方式

一:读取xml文件的所有元素

public Static void readBook(String filename){

   SAXReader  reader =new SAXReader(); //解析器

   File   file=new  File(filename); //指定xml文件

   try{

        Document  doc  =reader.read(file); //开始解析,建立树形结构并返回

        //Element     rootElmt=doc.getRootElement(); //获得根元素:书籍列表

        //List  list= rootElmt.elements("武侠小说"); //获得所有武侠小说的元素集合

 

        Node  root = doc.selectSingleNode("/booklist");//取根节点(根元素),绝对路径:/booklist,相对路径:book       

       

//查所有元素

        List<Element> list = root.selectNodes("book");

        for(Element  e : list){

             String  title =e.elementText("title")---e元素的子元素title元素的内容

             String  zh   =e.element("title").attributeValue("lang");---e元素的子元素title元素的属性

 

             String  isbn=e.attributeValue("isbn");---e元素的属性

         }

 

//查询指定的元素

          //查找所有中文书:lang=zh是title的属性(list中存放的都是title元素,book/title:相对路径,[@lang='zh']:过滤条件)

          List<Element> list = root.selectNodes("book/title[@lang='zh'] ");

          //查询所有武侠类书:book元素属性:catalog="武侠",list里的元素是book元素

          List<Element> list = root.selectNodes("book[@catalog='武侠'] ");

          //查询价格大于80的书:price是book的子元素,list里的每个元素是book元素

          List<Element> list = root.selectNodes("book[price > 80] ");

          //查询作者是金庸的书或古龙的书

          List<Element> list = root.selectNodes("book[author='金庸' or author='古龙'] ");

          //查询英文价格大于80的书

          List<Element> list = root.selectNodes("book[price > 80 and title[@lang='en']] ");

          for(Element e : list){

              e.getStringValue();

          }

        }catch(DocumentException  e){

      e.printStackTrace();

   }

 

}

 

  • 大小: 66.4 KB
  • 大小: 68.1 KB
分享到:
评论

相关推荐

    xml写入读取例子

    xml写入读取例子,上课做到WEB应用程序。

    C#读写XML文件

    使用Document读取及写入XML方法 使用XmlTextWriter写入XML方法 使用XmlTextReader读取XML方法 作用SqlCommand.ExecuteXmlReader()取得XML

    spring-boot-starter-batch-web

    由Spring Boot支持的企业就绪生产就绪批处理应用程序 项目batch-web-spring-boot-starter是Spring Batch的Spring Boot启动器,除了编写作业外... :使用作业参数在xml中配置的作业,该作业参数从文件读取并写入数据库

    《ASP.NET与数据库程序设计》

    6-1-1开发目的及内容 6-1-2 Access及SQL 执行安装 关于取得数据库的连接 6-2 DataGrid控制项 6-2-1编辑及储存 编辑及储存基本设计 编辑时锁定部份栏位 编辑时使用多种控制项 6-2-...

    1.ASP.NET.2.0.XML.高级编程(第3版) [1/3]

    \r\n 4.2.2 使用XmlReader类读取XML数据的步骤\r\n 4.3 写入XML数据 \r\n 4.4 小结 \r\n第5章 XML数据验证\r\n 5.1 XML验证 \r\n 5.1.1 .NET Framework 2.0支持的验证类型 \r\n 5.1.2 使用XSD模式验证XML数据 ...

    c# 创建、读写XML文件

    XML是微软.Net战略的一个重要组成部分,而且它可谓是XML Web服务的基石,所以掌握.Net框架下的XML技术自然显得非常重要了。本文将指导大家如何运用C#语言完成.Net框架下的XML文档的读写操作。

    xml入门教程/xml入门教程

    &1.XML简介 XML的背景 1) XML代表可扩展的标记语言(eXtensible Markup Language); 2) XML由W3C联盟发展维护; 3) XML是一种元语言,可以用来定义其它标签语言; 4) XML没有定义任何标记,它提供了一种工具定义...

    新版Android开发教程.rar

    � MVC 和 Web APP 架构 Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统逐渐有能力对桌面系统常规业务进行支持。 � 谷歌长期以来奉行的移动发展战略:通过与全球各地的...

    linq 读写 XML数据

    C# linq 与xml基础 怎样用linq快速读取xml数据方法势力 , 读取写入xml数据,.netweb项目 C#代码一样

    .net实验代码以及报告

    .net程序设计课程所做的实验(代码以及实验报告),使用VS2010开发;使用的时候请自己创建数据库然后修改数据库连接字符串,实验...用web service读取数据并写入XML文档。 3.使用XML控件显示写入的xml文档。 第二部分:

    C#XML入门经典 C#编程人员必备的XML技能.part2

    C# XML入门经典——C#编程人员必备的XML技能 作者:[美]Stewart Fraser, Steven 著,毛尧飞,崔伟 译 出版社:清华大学出版社 出版时间:2003年11月 第1章 在C#中使用XML的原因 &lt;br&gt;1.1 使用XML的原因...

    基于SpringMVC+Hibernate4的考勤管理系统+.zip

    poi组件 主要用于读取以及写入Microsoft Office格式档案 JSR 303 为实体验证定义了一个元数据模型和API 前端技术选型 JS框架:jQuery 1.8 CSS框架:Twitter Bootstrap 项目所需jar包列表 antlr-2.7.7.jar classmate-...

    潍坊学院成人教育Java-Web程序设计B卷试卷及参考答案.doc

    使用JSP开发Web项目时,web.xml文件一般位于目录结构中的_____下。 A. src目录 B. 文档根目录或其子文件夹 C. META-INF目录 D. WEB-INF目录 3. 下列代码的输出结果是______ &lt;script&gt; var s = "2,3,4,5,6"; document...

    sample-management-system:示例客户管理系统和邮件应用程序,从消息系统读取和写入

    介绍示例客户管理系统和邮件应用程序,从邮件系统读取和写入。 技术栈大纲1. Java EE 8:Bean 验证使用 JSR(349) 2. Spring MVC 3.2.3 3. RESTful/JSON 服务使用 Spring MVC 3.2.3 4. Web App Init 使用 JavaConfig,...

    新浪阅读器的二次开发

    缓存就是当选中treeview节点时,访问缓存(url)判断是否有xml数据,这面分两种情况,当无缓存时,我们在这面要第一次读取,读取完将xml数据写入缓存并记录当前的读取时间,显示xml数据。当有缓存时,判断时间是否...

    rgexf:在R中创建,读取和写入GEXF(图形交换XML格式)图形文件(用于Gephi等)

    使用XML库,它使用户可以轻松地构建/读取图形文件,包括属性,GEXF viz属性(例如颜色,大小和位置),网络动态(对于边缘和节点,包括咒语)和边缘权重。 用户可以按元素或通过数据框架大量构建/处理图形,通过...

    java写webapi源码-firefox-data-store-docs:包含有关跨所有平台的Firefox数据存储的文档的存储库

    该文件在整个应用程序中读取和写入。 每个单独的写入都会导致整个文件在以后写入磁盘。 桌面版 Firefox 使用 10 种不同的数据存储格式。 这些都是 SQLite 索引数据库 无扩展字符分隔文件(AlternateServices、...

    go web编程

    6.2.1 读取和写入CSV文件 133 6.2.2 gob包 135 6.3 Go与SQL 137 6.3.1 设置数据库 138 6.3.2 连接数据库 140 6.3.3 创建帖子 142 6.3.4 获取帖子 144 6.3.5 更新帖子 145 6.3.6 ...

    零基础学ASP.NET 2.0电子书&源代码绝对完整版1

    Part1第一部分: 相信大家找得到该书的源代码部分 也就是这部分内容 因此我便无偿奉送 让大家下载试试。 若感觉可以方可继续下载电子书部分。 1.本书1~21章所附代码的运行环境 操作系统:Windows Server 2003或...

Global site tag (gtag.js) - Google Analytics