`

JAXP在Spring中应用

 
阅读更多

     在阅读spring源码的过程中,想看下spring对xml的解析,发现是用的jaxp相关API实现的.于是想写个小demo,以加深对代码的理解.

1.用JAXP解析XML文档
Java有多种方法可以分析XML文档,你可以选择现在已经成熟的标准技术,比如DOM和SAX,或者你可以选择专用于处理XML的Java API (Java API for XML Processing,JAXP)。JAXP是一种专门提供XML文档解析的Java接口,下面简单介绍下.


2.用JAXP解析XML的步骤

(1)得到DocumentBuilderFactory解析器的工厂实例
    DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();

(2)从DocumentBuilder中工厂获得 DOM 解析器
    DocumentBuilder dombuilder=domfac.newDocumentBuilder();

(3)解析 XML 文档的输入流,得到一个 Document
    Document doc=dombuilder.parse(is);

(4)得到 XML 文档的根节点
    Element root=doc.getDocumentElement();

(5)得到节点的子节点

    NodeList beans=root.getChildNodes();


3.一个简单的Demo
demo.xml的内容如下: 

<?xml version="1.0" ?>  
<beans>  
    <bean id="beanId">  
        <property>spring</property>  
    </bean>  
</beans>
    public class JAXPDemo {  
      
        public static void main(String[] args) {  
            String filename = "E:/demo/demo.xml";  
      
            try {  
                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
                DocumentBuilder documentBuilder = factory.newDocumentBuilder();  
                Document document = documentBuilder.parse(filename);  
                Element root = document.getDocumentElement();  
                NodeList beans = root.getChildNodes();  
      
                for (int i = 0; i < beans.getLength(); i++) {  
                    Node bean = beans.item(i);  
                    if (bean.getNodeType() == Node.ELEMENT_NODE) {  
                        //取得节点的属性值     
                        String beanId = bean.getAttributes().getNamedItem("id").getNodeValue();  
                        System.out.println(beanId);  
      
                        for (Node node = bean.getFirstChild(); node != null; node = node  
                            .getNextSibling()) {  
                            if (node.getNodeType() == Node.ELEMENT_NODE) {  
                                if (node.getNodeName().equals("property")) {  
                                    String name = node.getNodeName();  
                                    String nodeValue = node.getFirstChild().getNodeValue();  
                                    System.out.println(name);  
                                    System.out.println(nodeValue);  
                                }  
                            }  
                        }  
                    }  
                }  
      
            } catch (Exception e) {  
      
            }  
        }  
    }

 

4.Spring中对xml文件的解析

Spring对xml文件的解析也是使用了JAXP,在其实现类中DefaultDocumentLoader可以看到.

    public Document loadDocument(InputSource inputSource, EntityResolver entityResolver,  
            ErrorHandler errorHandler, int validationMode, boolean namespaceAware) throws Exception {  
  
            DocumentBuilderFactory factory = createDocumentBuilderFactory(validationMode, namespaceAware);  
            if (logger.isDebugEnabled()) {  
                logger.debug("Using JAXP provider [" + factory.getClass().getName() + "]");  
            }  
            DocumentBuilder builder = createDocumentBuilder(factory, entityResolver, errorHandler);  
            return builder.parse(inputSource);  
    }
 

 

分享到:
评论

相关推荐

    Spring源码分析

    在Spring中,有多种类型的容器,比如: - **ClassPathXmlApplicationContext**: 从类路径下的XML文件中加载配置信息。 - **XmlWebApplicationContext**: 专为Web应用程序设计的容器,可以从Web应用的类路径下加载...

    JAVA技术在MES系统中的应用 (1).zip

    在实际应用中,Spring框架常被用来构建MES系统,因为它提供了依赖注入、AOP(面向切面编程)等高级特性,简化了开发过程。Spring Boot则进一步简化了配置,使得开发者能快速搭建起一个完整的MES服务。 对于分布式...

    Java & XML应用

    Spring框架是Java应用中的一个关键组件,它广泛使用XML配置文件来管理依赖注入和应用设置。通过XML配置,Spring可以轻松地创建、配置和管理bean,实现松耦合和可测试性。 在Web服务领域,Java的JAX-WS(Java API ...

    应用Java API开发Web Services电子书

    《应用Java API开发Web Services》是一本面向Java开发者,旨在深入理解并实践Web服务开发的电子书。...通过阅读本书,你将能够熟练掌握Java API在构建高效、安全的Web服务中的应用,提升你的职业技能。

    Java&XML.rar_XML java_xml

    Java和XML是两种在软件开发中广泛使用...通过学习和理解MainFrame的代码,初学者可以了解如何在Java GUI应用中读取、显示和处理XML数据。同时,阅读www.pudn.com.txt可以帮助理解项目背景和获取可能的进一步学习资源。

    Working with XML

    JAXP在许多Java应用中发挥重要作用,如Web服务、配置管理、日志记录等。例如,Spring框架中的XML配置文件就是通过JAXP解析的。 总结,Java API for XML Processing(JAXP)提供了处理XML的强大工具,包括解析、验证...

    注重开发J2EE应用遵循的关键问题

    例如,在表示层,Struts、JSF或者Spring MVC等框架提供了强大的视图和控制器支持,能够简化前端逻辑的构建。在控制层,Spring框架提供的依赖注入(DI)和面向切面编程(AOP)功能,有助于提高代码的可测试性和可维护...

    Java&XML应用

    8. **XML在移动开发中的应用**:在Android开发中,XML用于创建用户界面布局,定义动画效果,甚至配置应用程序的行为。 9. **XML安全**:处理XML时需要注意安全问题,如XXE(XML External Entity Injection)和XSS...

    Web_Service开发指南_2.3

    在本“Web Service开发指南_2.3”中,我们将深入探讨Java技术在Web服务开发中的应用。Java是Web服务开发中的重要语言,尤其通过Java API for XML Processing (JAXP)、Java API for XML Web Services (JAXWS) 和 Java...

    java xml编程指南

    《Java XML编程指南》是一本深入探讨Java与XML结合编程的专业书籍,旨在帮助读者掌握如何在Java应用程序中有效地使用XML技术。XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、...

    java课程纲目.pdf

    描述中提到的课程纲目涉及Java编程语言从基础到高级应用的各个方面,包括Swing GUI组件、JDBC数据库连接、Java Web技术、MVC模式、多层架构设计、XML解析、Linux操作系统应用、Hibernate对象关系映射(ORM)框架、...

    jsp+xml的一个小demo

    在JSP中,通过Java API for XML Processing (JAXP) 和XPath,可以方便地定位XML文档中的特定节点。例如,`XPathFactory.newInstance().newXPath().compile("/root/child").evaluate(doc)`可以获取匹配的节点值。 4....

    JavaEE企业应用现状及趋势(介绍了所有流行的技术 pdf格式)

    9. **Applets**:虽然现在已经被淘汰,但在过去曾用于在浏览器中运行Java程序。 #### MVC模式简介 MVC(Model-View-Controller)模式是一种常用的软件架构模式,它将应用程序分为三个核心组件:模型、视图和控制器...

    java面试宝典

    22、我们在web 应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 10 23、String 和StringBuffer 的区别? 10 24、String, StringBuffer StringBuilder 的区别。 10 25、...

    XML 高级编程

    在高级应用中,数据绑定技术如JAXB(Java Architecture for XML Binding)使我们可以将XML文档与Java对象之间进行映射,简化数据交换。通过JAXB,我们可以轻松地将Java对象序列化为XML,反之亦然。 另外,XPath是...

    Addison.Wesley.XML.and.Java.Developing.Web.Applications.2nd.Edition.May.2002

    它深入探讨了XML与Java在构建Web应用中的结合,为开发者提供了丰富的知识和实践经验。 XML(Extensible Markup Language)是一种标记语言,用于描述数据结构,具有自我描述性和灵活性。在Web应用中,XML常用于数据...

    java与xml讲解

    在实际应用中,Java和XML的结合常见于以下场景: - 配置文件:许多Java应用程序使用XML作为配置文件格式,如Spring框架的bean定义和Log4j的日志配置。 - 数据交换:Web服务(如SOAP)通常使用XML作为消息格式,Java...

    Xfire开发webservice与javaweb集成实例

    Xfire与Java Web应用的集成主要通过Servlet容器(如Tomcat)进行,通过Servlet将Xfire的Server实例部署到Web应用中。这通常涉及到以下步骤: 1. **打包Xfire**:将Xfire库文件添加到Java Web项目的lib目录下。 2. *...

    Java+Web Service教程

    在实际项目中,你可能需要集成Web Service到现有的Java应用中,例如Spring框架提供了对Web Service的全面支持,包括自动配置和抽象化复杂细节。学习如何在Spring框架中使用JAX-WS和JAX-RS将是提高开发效率的关键。 ...

    xml_programming_in_java.rar_XML java_java programming_xml how to

    Java编程语言提供了强大的支持来处理XML,使得开发者可以方便地在Java应用程序中解析、生成、修改和查询XML文档。本教程“XML Programming in Java”深入浅出地介绍了如何在Java环境中有效利用XML。 1. **Java与XML...

Global site tag (gtag.js) - Google Analytics