在阅读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中,有多种类型的容器,比如: - **ClassPathXmlApplicationContext**: 从类路径下的XML文件中加载配置信息。 - **XmlWebApplicationContext**: 专为Web应用程序设计的容器,可以从Web应用的类路径下加载...
在实际应用中,Spring框架常被用来构建MES系统,因为它提供了依赖注入、AOP(面向切面编程)等高级特性,简化了开发过程。Spring Boot则进一步简化了配置,使得开发者能快速搭建起一个完整的MES服务。 对于分布式...
Spring框架是Java应用中的一个关键组件,它广泛使用XML配置文件来管理依赖注入和应用设置。通过XML配置,Spring可以轻松地创建、配置和管理bean,实现松耦合和可测试性。 在Web服务领域,Java的JAX-WS(Java API ...
《应用Java API开发Web Services》是一本面向Java开发者,旨在深入理解并实践Web服务开发的电子书。...通过阅读本书,你将能够熟练掌握Java API在构建高效、安全的Web服务中的应用,提升你的职业技能。
Java和XML是两种在软件开发中广泛使用...通过学习和理解MainFrame的代码,初学者可以了解如何在Java GUI应用中读取、显示和处理XML数据。同时,阅读www.pudn.com.txt可以帮助理解项目背景和获取可能的进一步学习资源。
JAXP在许多Java应用中发挥重要作用,如Web服务、配置管理、日志记录等。例如,Spring框架中的XML配置文件就是通过JAXP解析的。 总结,Java API for XML Processing(JAXP)提供了处理XML的强大工具,包括解析、验证...
例如,在表示层,Struts、JSF或者Spring MVC等框架提供了强大的视图和控制器支持,能够简化前端逻辑的构建。在控制层,Spring框架提供的依赖注入(DI)和面向切面编程(AOP)功能,有助于提高代码的可测试性和可维护...
8. **XML在移动开发中的应用**:在Android开发中,XML用于创建用户界面布局,定义动画效果,甚至配置应用程序的行为。 9. **XML安全**:处理XML时需要注意安全问题,如XXE(XML External Entity Injection)和XSS...
在本“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技术。XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、...
描述中提到的课程纲目涉及Java编程语言从基础到高级应用的各个方面,包括Swing GUI组件、JDBC数据库连接、Java Web技术、MVC模式、多层架构设计、XML解析、Linux操作系统应用、Hibernate对象关系映射(ORM)框架、...
在JSP中,通过Java API for XML Processing (JAXP) 和XPath,可以方便地定位XML文档中的特定节点。例如,`XPathFactory.newInstance().newXPath().compile("/root/child").evaluate(doc)`可以获取匹配的节点值。 4....
9. **Applets**:虽然现在已经被淘汰,但在过去曾用于在浏览器中运行Java程序。 #### MVC模式简介 MVC(Model-View-Controller)模式是一种常用的软件架构模式,它将应用程序分为三个核心组件:模型、视图和控制器...
22、我们在web 应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 10 23、String 和StringBuffer 的区别? 10 24、String, StringBuffer StringBuilder 的区别。 10 25、...
在高级应用中,数据绑定技术如JAXB(Java Architecture for XML Binding)使我们可以将XML文档与Java对象之间进行映射,简化数据交换。通过JAXB,我们可以轻松地将Java对象序列化为XML,反之亦然。 另外,XPath是...
它深入探讨了XML与Java在构建Web应用中的结合,为开发者提供了丰富的知识和实践经验。 XML(Extensible Markup Language)是一种标记语言,用于描述数据结构,具有自我描述性和灵活性。在Web应用中,XML常用于数据...
在实际应用中,Java和XML的结合常见于以下场景: - 配置文件:许多Java应用程序使用XML作为配置文件格式,如Spring框架的bean定义和Log4j的日志配置。 - 数据交换:Web服务(如SOAP)通常使用XML作为消息格式,Java...
Xfire与Java Web应用的集成主要通过Servlet容器(如Tomcat)进行,通过Servlet将Xfire的Server实例部署到Web应用中。这通常涉及到以下步骤: 1. **打包Xfire**:将Xfire库文件添加到Java Web项目的lib目录下。 2. *...
在实际项目中,你可能需要集成Web Service到现有的Java应用中,例如Spring框架提供了对Web Service的全面支持,包括自动配置和抽象化复杂细节。学习如何在Spring框架中使用JAX-WS和JAX-RS将是提高开发效率的关键。 ...
Java编程语言提供了强大的支持来处理XML,使得开发者可以方便地在Java应用程序中解析、生成、修改和查询XML文档。本教程“XML Programming in Java”深入浅出地介绍了如何在Java环境中有效利用XML。 1. **Java与XML...