• Java 解析 XML


    Java 解析 XML

    标签: Java基础


    XML解析技术有两种 DOM SAX

    • DOM方式
      依据XML的层级结构在内存中分配一个树形结构,把XML的标签,属性和文本等元素都封装成树的节点对象
      • 长处: 便于实现
      • 缺点: XML文件过大可能造成内存溢出
    • SAX方式
      採用事件驱动模型边读边解析:从上到下一行行解析,解析到某一元素, 调用对应解析方法
      • 长处: 不会造成内存溢出,
      • 缺点: 查询不方便,但不能实现

    不同的公司和组织提供了针对DOM和SAX两种方式的解析器


    JAXP 解析

    JAXP是JavaSE的一部分,在javax.xml.parsers包下,分别针对dom与sax提供了例如以下解析器:

    • Dom
      • DocumentBuilder
      • DocumentBuilderFactory
    • SAX
      • SAXParser
      • SAXParserFactory

    演示样例XML例如以下,以下我们会使用JAXP对他进行 操作

    • config.xml
    <?

    xml version="1.0" encoding="utf-8"?> <!DOCTYPE beans SYSTEM "constraint.dtd"> <beans> <bean id="id1" class="com.fq.domain.Bean"> <property name="isUsed" value="true"/> </bean> <bean id="id2" class="com.fq.domain.ComplexBean"> <property name="refBean" ref="id1"/> </bean> </beans>

    • constraint.dtd
    <!ELEMENT beans (bean*) >
            <!ELEMENT bean (property*)>
            <!ATTLIST bean
                    id CDATA #REQUIRED
                    class CDATA #REQUIRED
                    >
    
            <!ELEMENT property EMPTY>
            <!ATTLIST property
                    name CDATA #REQUIRED
                    value CDATA #IMPLIED
                    ref CDATA #IMPLIED>

    JAXP-Dom

    /**
     * @author jifang
     * @since 16/1/13下午11:24.
     */
    public class XmlRead {
    
        @Test
        public void client() throws ParserConfigurationException, IOException, SAXException {
            // 生成一个Dom解析器
            DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    
            // 解析XML文件
            Document document = builder.parse(ClassLoader.getSystemResourceAsStream("config.xml"));
    
            // ...
        }
    }

    DocumentBuilderparse(String/File/InputSource/InputStream param)方法能够将一个XML文件解析为一个

  • 相关阅读:
    VirtualBox4.3.12 安装ubuntu 14.04 分辨率过小(600*480)问题的解决方法
    asp.net 权限管理系统
    rdlc 格式设置
    Could not load file or assembly 'Microsoft.ReportViewer.Common, Version=11.0.0.0 异常处理
    Asp.Net Web Forms/MVC/Console App中使用Autofac
    Mysql优化小记1
    Zyan 一个通信框架
    RDLC
    通过.NET客户端异步调用Web API(C#)
    ECharts问题--散点图中对散点添加点击事件
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7247316.html
Copyright © 2020-2023  润新知