java基础之xml

1.xml的概念:可扩展的标记语言,一种描述数据的格式。
         *
         * xml的作用:1)存储xml格式的数据在文件  2)在网络传输xml的数据  ....
         *
         * 常用的描述数据的格式
         *
         * 1)Properteis:java特有的数据格式,java有对应的api。
         *
         * 2)xml:通用的数据格式,各语言都支持,都有对应的api。
         *
         * 3)json:通用的数据格式,各语言都支持,都有对应的api。
         *
         * xml和json对比
         * xml:格式-》描述数据更加清晰,占用的内存更大。
         * json:格式-》描述数据没有xml清晰,占用的内存小。
         *
         * xml的语法
         *
         * 1)xml的声明
         *
         * <?xml version="1.0" encoding="编码字符集" ?>
         *
         * 2)xml的数据-》xml的标记进行描述
         *
         * -》开始标记
         * <标记名     属性名="属性的值"   属性名="属性的值" ...>   
         *       a)文件内容 b)子标记
         * -》结束标记
         * </标记名>
         *
         * -->开始标记和结束标记之间-可以写(a)文件内容 b)子标记 )-》一般只写一种
         *
         * 标记名-》对应数据的名字
         * 标记的数据描述:
         * a)属性 :少量的数据
         * b)文本内容 :比较长的数据
         * c)子标记:描述相似的多个子数据

        XML标记注意点
        
1)描述数据必须通过标记
2)标记名,属性名等 都是严格区分大小写
3)标记必须有结束  如果标记没有【元素的文本内容】或【子标记】可以直接<标记名/>结束
例如:<person name="李四" age="18" />
4)属性的值必须用(单或双)引号包裹(推荐双引号)
5)xml文件描述数据有且只能有一个根标记

6)标记要正确嵌套

2.xml常用解析:sax和dom解析两种方式
    java官方(jdk)提供了javax.xml.parsers包:sax和dom解析xml的包

sax解析特点:
         1)基于事件模型,每次读取数据会调用对应的事件
         2)每次读取的数据不保存
         3)读取消耗的内存小
         4)解析数据-复杂
         
dom解析特点:
        1)直接把整个xml文件读取到程序中封装为一个Document对象, Document对象可以得到根标签Element,通过根标签Element,得到各种子标签
        2)每次读取的数据保存在document中
        3)读取消耗的内存大
        4)解析数据-简单

dom和sax对比:
    1)sax性能好,处理数据麻烦。
    2)dom性能差,处理数据方便。
    3)因为一般处理的xml数据量小--实际开发都使用dom。
         *
         *
         * 最基本的xml解析(先sax再dom)

sax解析:
   读取xml数据
  1)得到sax解析器工厂
  SAXParserFactory factory = SAXParserFactory.newInstance();
  2)通过工厂得到sax解析器
  SAXParser saxParser = factory.newSAXParser();
  3)通过sax解析器解析xml文件,并注册用于解析的处理器
   saxParser.parse(in,new Handler());
处理器:用于回调的对象,包含了很多处理xml数据的方法,当解析到xml数据的时候,会
调用处理器的对应处理方法。

3.dom解析xml
         *
         读取xml数据
        
  1)得到dom解析器工厂
DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();
  2)通过工厂得到dom解析器
 DocumentBuilder builder = factory.newDocumentBuilder();
  3)通过dom解析器解析xml文件,得到对应文件的document对象。
  Document doc = builder.parse(in);
 
  4)去doc对象找到所需要的数据
    a)找到document对象的跟标记
         Element  getDocumentElement()  
    b)找到标记里所有的【指定标记名字】子标记
        NodeList getElementsByTagName(String name)
     NodeList-》接口-相当于  List<Node>    
        
    c)找到标记里文本内容
        String getTextContent()  
    d)找到标记里指定属性名的属性值
        String getAttribute(String name)
4.dom和sax对比:
    1)sax性能好,处理数据麻烦。
    2)dom性能差,处理数据方便。
    3)因为一般处理的xml数据量小--实际开发都使用dom。
    
        jdk官方的api:都有明星的缺点
        第三方组织提供了对xml解析的jar包(包含了很多class类的功能):jdom,dom4j...
        jdom:结合了sax和dom的优点,简化了dom的api。
         *
         *
         * classPath:配置项目需要使用的第三方组织或个人提供的jar文件(类的功能)
         * eclipse-》项目-右键-buildpath-》就是用来配置classpath的
         *
         * jdom的api
         *
         * 1)读取xml的数据
         * 入口-》org.jdom2.input
         *
         * a)创建解析器
         * SAXBuilder sax=new SAXBuilder();
         *
         * b)通过解析器解析xml文件为document对象
         * document doc对象=sax.build(文件)
         * -》document是jdom的对象
         *
         * c)通过document对象找数据
         *  1)找到document对象的跟标记
         *      getRootElement()
            2)找到标记里所有的【指定标记名字】子标记
                getChildren(java.lang.String cname)
            3)找到标记里【指定标记名字】第一个子标记
                getChild(java.lang.String cname)    
            
            4)找到标记里所有的子标记
                getChildren()
            3)找到标记里文本内容
                    getText() -》原始内容
                    getTextTrim()-》去左右空白的内容
            4)找到标记里指定属性名的属性值
                getAttributeValue(java.lang.String attname)    ->拿到字符串的值
                getAttribute(java.lang.String attname).get数字类型Value()-》拿到数字的值

5.jdom的api
         *
         * 2)把程序的数据写出到xml文件存储
         *
         * 入口-》org.jdom2.output
         *
         * 例如:写的数据
            张三,18,男
            2个朋友:柳岩,17- 刘德华 ,19
         *
         * 建立xml的格式
         * <person name="张三" age="18" sex="男">
         *         <friend name="柳岩" age="17" >java工程师</friend>
         *         <friend name="刘德华" age="19">ios工程师</friend>
         * </person>
         * a)创建document对象-》装我们要写出的xml数据
         *   1)创建document对象
         *     new  Document()
         *     
         *   2)创建标记person,friend
         *     new  Element(标记的名字)
         *   
         *   3)设置标记的属性名和属性值
         *         setAttribute(java.lang.String name, java.lang.String value)
         *     
         *   4)设置标记的文本内容
         *     setText(java.lang.String text)
         *   
         *   --》建立关系
         *   
         *   5)把根标记添加到document对象中
         *       setRootElement(Element rootElement)
         *   6)把标记添加到父标记
         *      -》父标记.add...(子标记)
         *      addContent(Content child)
         *      
         * b)利用XMLOutputter的output把document对象的数据
         * -》写到指定的输出流对应的数据源里。
         *
         *   1)创建XML输出器XMLOutputter对象
         *   new XMLOutputter();
         *     new XMLOutputter(format格式化的对象);
         *     
         *     Format.getPrettyFormat()->漂亮的格式对象
         *     
         *   2)利用xml输出器把【document对象】的数据输出到指定【输出流】对应的数据源里。
         *      输出器.output(document对象,输出流);
         *
         *
         *  c)更新xml数据
         *  
         1)读取xml数据-》到docuemnt对象中
         2)把docuemnt对象中数据做修改
         3)把document对象的数据写出到xml中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值