`
kim_miao
  • 浏览: 190688 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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);
		}
0
0
分享到:
评论

相关推荐

    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