`

对含有命名空间的xml进行解析

阅读更多
这是网上一个人模拟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解析器和测试程序

    本项目提供了自定义的XML解析器,旨在理解和处理XML文档,同时包含了测试程序,以便对解析器的功能和性能进行验证。 XML解析器是核心部分,它负责读取XML文档,将其转化为可操作的数据结构。XML解析器通常分为两种...

    xml解析为java集合对象.pdf

    在XML文档中,元素可以有命名空间,因此在解析时可能需要处理与命名空间相关的逻辑。 ### 知识点七:数据结构构建 通过将XML文档解析后的数据存储到Java集合中,构建了一个层次化的数据结构。这在数据处理和业务...

    winform treeview XML 编辑器

    1. **XML解析和序列化**:使用.NET Framework提供的System.Xml命名空间中的类,如XmlDocument或XDocument,来加载XML文件,解析其内容,并将结构填充到TreeView控件中。同时,保存编辑时,需要将TreeView和...

    perl program for xml simple reading

    然而,需要注意的是,尽管它的名字中含有“简单”,但在处理复杂或大型的XML文件时,它可能并不如其他更复杂的XML解析器如`XML::LibXML`或`XML::Twig`那样灵活和强大。 在这个场景中,"perl program for xml simple...

    c# XML加载html节点

    在C#中,我们可以使用System.Xml命名空间下的类来操作XML,例如XmlDocument、XmlNode、XmlElement等。以下是一个简单的例子,展示如何加载XML文件并查找含有HTML的节点: ```csharp using System; using System.IO;...

    c#中XML解析文件出错解决方法

    在C#中,可以利用System.Text.RegularExpressions命名空间下的Regex类来实现这一功能。过滤的方法一般如下: ```csharp return System.Text.RegularExpressions.Regex.Replace(str,@"[\x00-\x08]|[\x0B-\x0C]|[\x0E-...

    C++ XML

    XML文档遵循一定的语法规则,如元素嵌套、属性使用以及命名空间的定义。 当在C++中处理XML时,通常有两种主要的方法:一是直接使用C++标准库中的字符串操作和解析函数,但这通常涉及到复杂的字符串处理和错误检查;...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    XML对这一原理进行了深化和扩展,用XML,你可以描述你的信息在哪里,你可以通过meta来验证信息,执行搜索,强制显示,或者处理其他的数据。 下面是一些XML metadata在实际应用中的用途: 1.可以验证数字签名,使...

    word2007-xml存储标签属性说明文件.pdf

    比如,“xml:space="preserve"”可以指示XML解析器保留文本中的空格和换行符,这对于格式化文本是非常重要的。 XML标签也用于表示文档中的特殊字符和格式。例如,“w:r”代表一个文本范围(run),它可能含有属性如...

    很简单的XML 实验源代码14

    总的来说,这个实验旨在教授XML的基本概念,包括元素、属性、命名空间以及如何通过编程语言处理XML数据。通过分析和操作“huangxiaochao”这个文件,学习者可以深化对XML的理解,并掌握实际应用中的XML处理技能。

    XMLParser

    XMLParser能识别和处理命名空间声明,使得在解析含有命名空间的XML文档时不会出现问题。 4. **事件驱动解析**:有些XMLParser采用事件驱动模型,当遇到XML文档中的特定事件(如开始元素、结束元素、文本内容等)时...

    IBM developerWorks 教程:XML简介

    SAX和JDOM都是用于处理XML文档的API,而JAXP是一组用于XML解析的标准API。 **链接和引用** XML支持外部资源的引用,如图片、脚本文件等。 **安全性** 在处理XML文档时,需要注意防止注入攻击等安全问题。 **Web...

    asp.net post xml数据 (500) 内部服务器错误解决办法(源代码)

    1. **语法错误**:XML文档可能含有无效的语法,如未闭合的标签、命名空间冲突或非法字符。在发送XML数据前,确保数据格式正确,可以使用XML验证器检查。 2. **服务器配置问题**:IIS(Internet Information ...

    Gson, XML结合Ajax(结合servlet技术)

    XML文件通常比JSON更大,但提供了更丰富的结构和命名空间,适合处理复杂的数据结构。 **Ajax(Asynchronous JavaScript and XML)**是一种在不刷新整个页面的情况下更新部分网页的技术。它通过JavaScript发送异步...

    C#实现实体类和XML相互转换

    要将实体类转换为XML,我们需要使用 .NET Framework 提供的 `System.Xml.Serialization` 命名空间中的 `XmlSerializer` 类。`XmlSerializer` 类提供了序列化和反序列化的方法,可以将对象转换为XML文档或从XML文档...

    Ruby的XML格式数据解析库Nokogiri的使用进阶

    ### Ruby的XML格式数据解析库Nokogiri的使用进阶 #### 一、Nokogiri概述 ...此外,对于含有多个命名空间的复杂XML文档,Nokogiri也提供了灵活的处理方式,使得开发者能够轻松地处理各种复杂的XML数据结构。

    XML CDATA是什么?

    2. 使用XML Schema:XML Schema是另一种定义XML文档结构的方式,它比DTD更为复杂和强大,支持数据类型定义、命名空间以及对XML文档结构的更细致控制。 XML的有效性验证通常需要一个XML解析器和相应的DTD或Schema。...

    jQuery解析XML文件同时动态增加js文件的方法

    此外,如果通过这种方式动态加载的JavaScript文件中的函数或变量与页面上已存在的同名函数或变量冲突,那么可能会出现覆盖或被覆盖的情况,这需要开发者在编写代码时做好相应的命名空间管理。 最后,本文所述的方法...

    xml-fortran-开源

    1. **XML解析器**:该库包含一个XML解析器,能将XML文档转换为内部数据结构,便于Fortran程序处理。解析器通常会处理XML文档的语法和结构,确保数据的有效性。 2. **XML生成器**:反之,该库也支持生成XML文档,让...

Global site tag (gtag.js) - Google Analytics