这是网上一个人模拟spring IOC 加载xml部分的代码,
作者使用的saxReader进行解析的xml的。对于逐步(顺序)进行解析xml,saxReader是一种比较好的选择。
private void readXML(String filename) {
SAXReader saxReader = new SAXReader();
Document document=null;
try{
URL xmlpath = this.getClass().getClassLoader().getResource(filename); //通过classLoader实例的getResource获取classPath下的filename文件的URL。
document = saxReader.read(xmlpath); //saxReader通过一个URL读取xml到documnet中。
//因为xml是带有命名空间的,所以需要设置查询路径,然后通过查询路径的selectNodes(查找范围的节点)获取想要遍历的List<element>集合。
Map<String,String> nsMap = new HashMap<String,String>();
nsMap.put("ns","http://www.springframework.org/schema/beans");//设置命名空间变量
XPath xsub = document.createXPath("//ns:beans/ns:bean");
// 两个反斜杠代表从根上开始,创建beans/bean查询路径
xsub.setNamespaceURIs(nsMap);//设置命名空间
List<Element> beans = xsub.selectNodes(document);//获取文档下所有bean节点
for(Element element: beans){
String id = element.attributeValue("id");//获取id属性值
String clazz = element.attributeValue("class"); //获取class属性值
Definition beanDefine = new Definition(id, clazz);
XPath propertysub = element.createXPath("ns:property");
//获取命名空间下的property的查询路径
propertysub.setNamespaceURIs(nsMap);//设置命名空间
List<Element> propertys = propertysub.selectNodes(element);
for(Element property : propertys){
String propertyName = property.attributeValue("name");//元素内部引用的属性也获取
String propertyref = property.attributeValue("ref");
ProsDefinition propertyDefinition = new ProsDefinition(propertyName, propertyref);
beanDefine.getPropertys().add(propertyDefinition);
}
beanDefines.add(beanDefine);
}
}catch(Exception e){
e.printStackTrace();
}
}
分享到:
相关推荐
XML的命名空间
java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava...
解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml
易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 教程 带源码
XML 解析XML 解析XML 解析XML 解析XML 解析XML 解析XML 解析
NULL 博文链接:https://qiaokeli.iteye.com/blog/1790138
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,...
jquery.xmlns-1.7.0.js 是根据jquery.xmlns.js改写的适用于各种版本的jquery解析带命名空间的XML数据,里面附有实例代码,如果使用中有遇到问题,可以反馈,我会进一步改进。
在PowerBuilder中对xml数据进行解析的源码,对于开发各类数据接口很有帮助
自己编写的天气预报小程序,使用了sqlit数据库,xml文件解析等方法。
C# 读取 带 xmlns 命名空间 XML 结点 SelectSingleNode 类 For .NET Framework 1.1x AutoPrefix(System.Xml.XmlNode xNode, System.Xml.XmlNamespaceManager xNameSpaceManager) AutoXPath(System.Xml.XmlNode ...
xml解析xml解析xml解析例子xml解析xml解析xml解析xml解析xml解析xml解析xml解析
Tinyxml文件解析经典例子
C++实现对xml文件的解析,C++实现对xml文件的解析,C++实现对xml文件的解析。
C# XML解析方式
WebApi 返回 xml 格式数据时自动去除命名空间相关标记
xml 解析几何 xml 解析几何 xml 解析几何
TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译,使用TinyXML进行C++ XML解析,使用简单,容易上手。 这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便...
sap解析xml报文并将报文内容提取到内表中,附件带有详细的源代码和操作步骤。有注释!
javascript 对xml文件解析 解决大家常见的javascript对xml文件解析问题