问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中的xml解析

发布网友 发布时间:2022-04-07 16:46

我来回答

3个回答

懂视网 时间:2022-04-07 21:07

1. JDBC概述:JDBC(数据库连接)是Java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类库(位于java.sql和javax.sql包中)。用JDBC开发的数据库         应用既可以跨操作系统平台,又可以跨数据库系统平台。

         在JDBC的基本操作中,最常用的类和接口包括DriverManager,  Connection,  Statement,  PreparedStatement,  CallableStatement 和 ResultSet.

         (1) DriverManager类  用于管理JDBC驱动的服务类,程序中主要使用该类获得Connection对象。

           (2) Connection接口  代表数据库连接,每个Connection对象代表一个与数据库的物理连接会话。要想访问数据库,必须先获得数据库连接。

         (3) Statement接口  SQL语句,Statement对象用于执行SQL语句,它可以用于执行DML、DDL和DCL语句。当执行SQL查询时,返回查询到的结果集。

         (4) PreparedStatement接口  是Statement的子接口,代表预编译的SQL语句。使用PreparedStatement对象可以执行预编译的SQL语句,性能更好。

         (5) CallableStatement接口  也是Statement的子接口,代表数据库中的存储过程。使用CallableStatement对象可以执行数据库中的存储过程。

         (6) ResultSet接口  代表返回的结果集。ResultSet包含访问查询结果的方法,它可以通过列索引或列名获得列数据。使用ResultSet对象可以操作查询返回的结           果集。

2.JDBC编程六步骤:

        (1) 根据应用程序所用的数据库,选择JDBC驱动程序类型;

        (2) 连接到数据库,得到Connection对象;

          (3) 通过Connection创建Statement对象;

        (4) 使用Statement对象提交SQL语句;

        (5) 操作结果集;

        (6) 回收数据库资源。

3.连接到数据库:有两种方法可以设置一个到数据库的连接,分别是:

        (1) 使用java.sql.DriverManager类的静态方法getConnection(),该方法带一个URL代表数据源的名称。

        (2) 使用JNDI (Java Naming and Directory Interface, Java命名服务) 查找数据源的名称。JNDI返回一个javax.sql.DataSource类的getConnection()方            法。

4.通过Connection创建Statement对象:

     在JDBC中有三种类型的Statement对象:

        (1) java.sql.Statement:代表一个没有参数的简单的sql语句;

          (2) java.sql.PreparedStatement: PreparedStatement是Statement的子接口,代表预编译的SQL语句。该语句带有参数参数需要在SQL语句执行前进               行设置。

        (3) java.sql.CallableStatement:CallableStatement是Statement的子接口,CallableStatement对象用于调用数据库中的存储数据过程。

       Connection有三个方法分别用于创建这三类Statement:

        (1) Statement create Statement():创建基本的Statement对象。

          (2) PreparedStatement preparedStatement (String sql):根据传入的SQL语句创建PreparedStatement 对象。

        (3) CallableStatement prepareCall ( String sql ):根据传入的sql语句创建CallableStatement对象。

     Statement常用于执行一个肯定只发生一次,并且没有参数的SQL语句。

5.使用JDBC执行SQL语句:

     Ⅰ 使用Statement执行SQL语句:Statement代表任何SQL语句,同时Statement接口提供了定义和执行SQL语句的一些方法,包括:

        (1) ResultSet executeQuery (String sql):执行一个返回单个结果集的SQL语句。只能该方法执行SELECT语句。

        (2) int executeUpdate (String sql):使用该方法执行不返回结果集的DDL和DML ( Update, Insert, Delete )语句。如果执行的是DML,则返回值为执行SQL         语句影响的行数,如果执行的是DDL,则返回值为0。

        (3) boolean execute (String sql):该方法可以执行任何SQL语句。

      Ⅱ 使用PreparedStatement执行SQL语句:PreparedStatement接口用于代表一条预编译的语句。Connection接口中包含了如下六个方法用于创建              PreparedStatement对象:

       (1) preparedStatement ( String sql ):使用给定SQL语句,创建一个默认的PreparedStatement对象;

       (2) PreparedStatement ( String sql, int ResultSetType, int concurrency, int holdability ):使用给定SQL语句、结果集类型、并发类型和可保存性类型,创          建一个PreparedStatement对象。

       (3) PreparedStatement ( String sql, int ResultSetType, int concurrency ):使用给定SQL语句、结果集类型、并发类型,创建一个PreparedStatement对           象。

       (4) PreparedStatement ( String sql, int pk ):创建一个默认PreparedStatement对象,该对象能获取自动生成的键。参数pk指示是否应该返回自动生成的键的         标志,它是StatementRETURN_GENERATED_KEYS 或 StatementNO_GENERATED_KEYS之一。

         (5) PreparedStatement ( String sql, String[] keys ):创建一个默认PreparedStatement对象,该对象能获取自动生成的键。keys字符串数组代表组成主键的         列名。

       (6) PreparedStatement ( String sql, int[] keys ):余上一个方法类似,除了列数组使用列索引代替列名来描述。

       注:后三个方法只适用于Insert方法。

Java与XML解析技术:

1.XML概述:

    XML指可扩展标记语言(eXtensible Markup Language),它是一种很像HTML的标记语言。XML的设计宗旨是传输数据,焦点是数据的内容,而HTML被设计用来显示    数据,其焦点是数据的外观。XML是不会做任何事情的,它只是被设计用来结构化、存储以及传输信息。

1.XML语法规则:

    1. 它定义XML的版本(1.0)和所使用的编码(utf-8)字符集。

    2. 所有的XML元素都是成对出现的,有一个开始标签,就必须有一个关闭标签。

    3. XML标签对大小写敏感,标签<Letter>与标签<letter>是不同的。

    4. XML文档必须有根元素,标签如果需要嵌套,必须正确嵌套,在内层打开的标签就必须在内层关闭。

    5. XML标签如果需要添加属性,属性值必须加引号。

    6. 在XML中编写注释的语法与HTML的语法很相似,都是 <!– This is a comment –>。

    7. 在XML中,空格会被保留,不像HTML中,加再多的空格最终都只合并为一个。

XML命名规则

XML元素必须遵循以下命名规则:

  • 名称可以包含字母、数字以及其他的字符
  • 名称不能以数字或者标点符号开始
  • 名称不能以字母 xml(或者 XML、Xml 等等)开始
  • 名称不能包含空格
  • 可使用任何名称,没有保留的字词。
  •     XML声明:1.XML文档声明由"<?xml"开始,由"?>"结束;

             2.XML声明有版本号 ( version )、独立文档声明 ( standalone ) 和编码声明 ( encoding )三个属性;    

             3.版本声明文档所采用的XML版本号,必须排在第一位;

     

    DTD:

        DTD的目的是定义XML文档的结构。它使用一系列合法的元素来定义文档结构:

    在DTD中,XML元素通过元素声明来进行声明。元素声明使用下面的语法:

         1 <!ELEMENT 元素名称 类别> 

          或  

         1 <!ELEMENT 元素名称 (元素内容)> 

    空元素:空元素通过类别关键词EMPTY进行声明:

         1 <!ELEMENT 元素名称 EMPTY> 

    声明只出现一次的元素:

         1 <!ELEMENT 元素名称 (子元素名称)> 

    声明最少出现一次的元素:

         1 <!ELEMENT 元素名称 (子元素名称+)>  

    声明出现零次或多次的元素:

         1 <!ELEMENT 元素名称 (子元素名称*)> 

    声明出现零次或一次的元素:

         1 <!ELEMENT 元素名称 (子元素名称?)> 

    声明属性:

         1 <!ATTLIST 元素名称 属性名称 属性类型 默认值> 

    xPath:

    XPath路径表达式

        XPath使用路径表达式来选取XML文档中的节点或者节点集,这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。

    XPth节点:

        在XPath中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML文档是被作为节点树来对待的,树的根被称为文档节点或者根    节点。

    XPath通配符可用来选取未知的XML元素:

    通配符 描述
    * 匹配任何元素节点
    @* 匹配任何属性节点
    node() 匹配任何类型的节点

    SAX提供一种用于解析XML文档的事件驱动模型,在识别不同的XML语法结构时SAX解析器使用回调机制来通知客户端应用程序

    Java数据库编程、Java与XML解析技术

    标签:

    热心网友 时间:2022-04-07 18:15

    dom是解析xml的底层接口之一(另一种是sax)
    而jdom和dom4j则是基于底层api的更高级封装
    dom是通用的,而jdom和dom4j则是面向java语言的
    DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而 DOM 被认为是基于树或基于对象的。DOM 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像 SAX 那样是一次性的处理。DOM 使用起来也要简单得多。
    XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较(转自zsq)
    1、DOM
    DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而 DOM 被认为是基于树或基于对象的。DOM 以及广义的基于树的处理具有几个优点。
    首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像 SAX 那样是一次性的处理。DOM 使用起来也要简单得多。
    另一方面,对于特别大的文档,解析和加载整个文档可能很慢且很耗资源,因此使用其他手段来处理这样的数据会更好。这些基于事件的模型,比如 SAX。
    2、SAX
    这种处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX 还比它的替代者 DOM 快许多。
    3、选择 DOM 还是选择 SAX ?
    对于需要自己编写代码来处理 XML 文档的开发人员来说,选择 DOM 还是 SAX 解析模型是一个非常重要的设计决策。
    DOM 采用建立树形结构的方式访问 XML 文档,而 SAX 采用的事件模型。
    DOM 解析器把 XML 文档转化为一个包含其内容的树,并可以对树进行遍历。用 DOM 解析模型的优点是编程容易,开发人员只需要调用建树的指令,然后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用 DOM 解析器的时候需要处理整个 XML 文档,所以对性能和内存的要求比较高,尤其是遇到很大的 XML 文件的时候。由于它的遍历能力,DOM 解析器常用于 XML 文档需要频繁的改变的服务中。
    SAX 解析器采用了基于事件的模型,它在解析 XML 文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX 对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX 这种扩展能力得到了更好的体现。但用 SAX 解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。
    4、JDOM
    JDOM的目的是成为 Java 特定文档模型,它简化与 XML 的交互并且比使用 DOM 实现更快。由于是第一个 Java 特定模型,JDOM 一直得到大力推广和促进。正在考虑通过“Java 规范请求 JSR-102”将它最终用作“Java 标准扩展”。从 2000 年初就已经开始了 JDOM 开发。
    JDOM 与 DOM 主要有两方面不同。首先,JDOM 仅使用具体类而不使用接口。这在某些方面简化了 API,但是也*了灵活性。第二,API 大量使用了 Collections 类,简化了那些已经熟悉这些类的 Java 开发者的使用。
    JDOM 文档声明其目的是“使用 20%(或更少)的精力解决 80%(或更多)Java/XML 问题”(根据学习曲线假定为 20%)。JDOM 对于大多数 Java/XML 应用程序来说当然是有用的,并且大多数开发者发现 API 比 DOM 容易理解得多。JDOM 还包括对程序行为的相当广泛检查以防止用户做任何在 XML 中无意义的事。然而,它仍需要您充分理解 XML 以便做一些超出基本的工作(或者甚至理解某些情况下的错误)。这也许是比学习 DOM 或 JDOM 接口都更有意义的工作。
    JDOM 自身不包含解析器。它通常使用 SAX2 解析器来解析和验证输入 XML 文档(尽管它还可以将以前构造的 DOM 表示作为输入)。它包含一些转换器以将 JDOM 表示输出成 SAX2 事件流、DOM 模型或 XML 文本文档。JDOM 是在 Apache 许可证变体下发布的开放源码。
    5、DOM4J
    虽然 DOM4J 代表了完全独立的开发结果,但最初,它是 JDOM 的一种智能分支。它合并了许多超出基本 XML 文档表示的功能,包括集成的 XPath 支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过 DOM4J API 和标准 DOM 接口具有并行访问功能。从 2000 下半年开始,它就一直处于开发之中。
    为支持所有这些功能,DOM4J 使用接口和抽象基本类方法。DOM4J 大量使用了 API 中的 Collections 类,但是在许多情况下,它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是,虽然 DOM4J 付出了更复杂的 API 的代价,但是它提供了比 JDOM 大得多的灵活性。
    在添加灵活性、XPath 集成和对大文档处理的目标时,DOM4J 的目标与 JDOM 是一样的:针对 Java 开发者的易用性和直观操作。它还致力于成为比 JDOM 更完整的解决方案,实现在本质上处理所有 Java/XML 问题的目标。在完成该目标时,它比 JDOM 更少强调防止不正确的应用程序行为。
    DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J。
    6、总述
    JDOM 和 DOM 在性能测试时表现不佳,在测试 10M 文档时内存溢出。在小文档情况下还值得考虑使用 DOM 和 JDOM。虽然 JDOM 的开发者已经说明他们期望在正式发行版前专注性能问题,但是从性能观点来看,它确实没有值得推荐之处。另外,DOM 仍是一个非常好的选择。DOM 实现广泛应用于多种编程语言。它还是许多其它与 XML 相关的标准的基础,因为它正式获得 W3C 推荐(与基于非标准的 Java 模型相对),所以在某些类型的项目中可能也需要它(如在 javascript 中使用 DOM)。
    SAX表现较好,这要依赖于它特定的解析方式。一个 SAX 检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。
    无疑,DOM4J是最好的,目前许多开源项目中大量采用 DOM4J,例如大名鼎鼎的 Hibernate 也用 DOM4J 来读取 XML 配置文件。如果不考虑可移植性,那就采用DOM4J吧!

    热心网友 时间:2022-04-07 19:33

    dom,sax,StAX。
    dom4j。jdom。xpath。
    现在应该使用StAX,而不是SAX。
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 机房工程建设都包括哪些系统内容? f22有多少种 若要查询学生信息表中的&quot;备注&quot;字段不为空记录,在&quot;备注&quot;字段对应的&quot;条件 请问,怎么查询一个大学生毕业生简历真实性 简述水环境功能分区和污染控制单元的区别 查询没有选课的学生信息 水环境功能区划与水污染控制单元的区别和联系 计算机ACCESS中创建个查询把人员的简历为空,是输入Null,还是&quot; &quot; 创建一个查询,查找没有摄影爱好的学生的姓名,学好,成绩等内容 查询students数据库stu_info表中,“简历”字段为空值的学生信息。 减弱噪声污染的办法是什么? 说出三种从根源解决噪声污染的不同方法 对噪声污染的处理是怎样的? 随着社会发展,噪音污染日益严重,生活中该如何防治噪音污染呢? 噪音污染的解决办法 疲劳驾驶对安全行车的影响有哪些 驾车22小时被交警罚睡2小时,疲劳驾驶会被如何处罚? 噪音污染怎么处理 司机高速开车睡着被罚2分,疲劳驾驶有哪些危害? 疲劳驾驶怎么消除 在教育局能否找到在校大学生的资料,如果能找找,那该怎么查询? 无公害蛋鸭场很普遍,无公害蛋鸭场的环境控制方式有哪几种? 在买房子的这些客户中,刚性型指什么?改善型指什么?投资型指什么? 办公用房和住宅区别 法人投资型客户能否进行黄金实物交割 城市轨道列车紧急制动出了问题相关系统怎么运行 c语言 查找学生信息 怎样查找个人简历. 中国有自己的预警机么?造一个预警机多少钱?世界上那些国家有造预警机的能力?那些国家有预警机? 办理电子营业执照最后的电子签名签不上怎么办- 问一问 ly1231型智能环境控制仪引风机水温不显示 OPM是什么意思 access中 创建一个查询 查找并显示有摄影爱好的学生的“学号”,“姓名”字段内容 河北省个体工商户全程电子化业务办理app上签名老是打不开 中国歼-11b与日本F-15j相比性能谁高谁低? 电话销售常见客户类型有哪些 苏州阿洛斯环境控制系统有限公司怎么样? 求助C语言学生系统中按照姓名进行查找学生 请问金融名词OPM是什么意思? 市场监督管理局电子签名总是不成功