• 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文件解析为一个

  • 相关阅读:
    问题账户需求分析
    2018年春季个人阅读计划
    图表分析
    《软件需求与分析》需要掌握的内容
    假期实践体验
    开发进度12
    开发进度11
    python+opencv实现轮廓形状拟合
    ubuntu无法安装vim、tree等解决办法
    报错 version `GLIBCXX_3.4.22' not found
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7247316.html
Copyright © 2020-2023  润新知