public static void init(){
String filename=BeifengMVCXMLFactory.class.getResource("/beifengmvc.xml").getFile();
File file=new File(filename);
SAXReader reader=new SAXReader();
Document doc=null;
try {
doc=reader.read(file);
Element root=doc.getRootElement();
Element packagee=root.element("package");
String defaultfilename=packagee.attributeValue("extends");
getDefaultXMLInfo(defaultfilename);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void getDefaultXMLInfo(String filename){
File file=new File(BeifengMVCXMLFactory.class.getResource("/"+filename+".xml").getFile());
SAXReader reader=new SAXReader();
BeifengMvc mvc=new BeifengMvc();
List<InterceptorInfo> allinterceptor=null;
Map<String, InterceptorStack> stackmap=null;
String defaultstack="";
try {
Document doc=reader.read(file);
Element root=doc.getRootElement();
Element packages=root.element("package");
List<Element> list=packages.elements();
for(Element e:list){
if(e.getName().equals("interceptor")){
if(null==allinterceptor){
allinterceptor=new ArrayList<InterceptorInfo>();
}
InterceptorInfo info=new InterceptorInfo();
info.setInterceptorname(e.attributeValue("name"));
info.setInterceptorclass(e.attributeValue("class"));
//获得拦截器内的标签,从而配置Result属性
List<Element> resultlist=e.elements();
if(resultlist!=null){
Map<String, Result> resultmap=new HashMap<String, Result>();
for(Element resulte:resultlist){
Result r=new Result();
r.setResultname(resulte.attributeValue("name"));
Attribute type=resulte.attribute("type");
if(type!=null){
r.setResulttype(type.getValue());
}
r.setResultjsp(resulte.getText());
resultmap.put(r.getResultname(), r);
}
info.setResultmap(resultmap);
}
allinterceptor.add(info);
}else if(e.getName().equals("interceptor-stack")){
if(null==stackmap){
stackmap=new HashMap<String, InterceptorStack>();
}
InterceptorStack stack=new InterceptorStack();
stack.setStackname(e.attributeValue("name"));
List<Element> refelement=e.elements();
List<InterceptorInfo> interceptorlist=new ArrayList<InterceptorInfo>();
for(Element ref:refelement){
String refname=ref.attributeValue("name");
for(InterceptorInfo info:allinterceptor){
if(refname.equals(info.getInterceptorname())){
interceptorlist.add(info);
break;
}
}
}
stack.setInterceptorlist(interceptorlist);
stackmap.put(stack.getStackname(), stack);
}else if(e.getName().equals("defaultstack")){
defaultstack=e.attributeValue("name");
}
}
mvc.setDefaultstack(defaultstack);
mvc.setAllinterceptor(allinterceptor);
mvc.setStackmap(stackmap);
ConstantMVC.DEFAULTMVCINFO=mvc;
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
分享到:
相关推荐
下面将详细讨论PHP如何利用DOMDocument类读取XML文件以及这个“php读取xml文件类”的基本工作原理。 首先,DOMDocument类是PHP内建的DOM扩展的一部分,它遵循DOM(Document Object Model)规范,为XML文档提供了一...
要读取XML文件,Java提供了多种方法。以下是四种常用的方法,每种都有其适用场景和特点: 1. **DOM解析器(Document Object Model)** DOM解析器将整个XML文件加载到内存中,创建一个树形结构,允许我们通过节点...
本示例将详细介绍如何在C#中读取XML文件,帮助开发者理解并掌握相关技术。 首先,让我们了解XML文件的基本结构。XML文件通常包含元素(Element)、属性(Attribute)、文本内容(Text Content)等组成部分。元素是...
本教程将深入探讨如何使用TinyXML解析器在C++中读取XML文件。 TinyXML是一个小型、轻量级的开源库,设计用于在C++中解析XML文档。它的主要优点在于简单易用,同时保持了良好的性能。下面我们将详细介绍如何使用Tiny...
本篇文章将详细阐述如何使用C#来读取XML文件,并提供相关的编程示例。 首先,要读取XML文件,你需要引入`System.Xml`命名空间,它包含了处理XML的基本类库。在你的C#源代码文件顶部添加以下引用: ```csharp using...
接下来,我们来看一段基本的读取XML文件的C++代码示例: ```cpp #include "tinyxml.h" int main() { TiXmlDocument doc("example.xml"); // 创建一个文档对象,传入XML文件名 if (!doc.LoadFile()) { // 加载...
标题"用C#快速读取XML文件,并遍历"所涉及的核心知识点包括: 1. **System.Xml命名空间**:C#中处理XML的主要工具位于System.Xml命名空间下,包括XmlDocument、XmlNode、XmlElement等类,它们提供了读取、写入和操作...
Flash读取XML文件是通过`URLLoader`加载XML文件,然后使用`XML`类解析数据。加载过程中需要注意监听加载事件,处理成功和错误的情况。在实际项目中,XML常用于动态加载和更新内容,与Flash进行数据交换。如果`cssxml...
下面,我们将详细介绍三种使用C#读取XML文件并将其写入数据库的方法。 1. **使用XmlReader类逐行读取并写入** - `XmlReader` 是一个高效的流式读取器,不占用大量内存。通过创建`XmlReader`实例,我们可以逐个节点...
如果只需要读取XML文件中的某个特定节点的值,可以使用`XmlDocument`类结合`GetElementsByTagName`方法来实现。代码示例如下: ```csharp public static string ReadXmlReturnNode(string XmlPath, string NodeName...
c++读取XML配置文件C++中并没有操作XML文件的标准库,因此大家需要使用各自熟悉的XML库来解决XML文件的读取与写入。XML的一个重要用途是作为程序的配置文件,存储程序运行相关的各种数据。本文总结了使用libxml2库来...
具体到读取XML文件,主要使用 `XmlDocument` 类。以下是一段基础的代码示例: ```csharp using System; using System.Xml; public class Program { public static void Main() { // 创建 XmlDocument 对象 Xml...
//通过文件路径及文件名读取xml public XMLReader(String path, String filename); //初始化读取包下的的XML文件 public XMLReader(Package package1, String fileName); //读取WEB-INF下的xml文件 public XMLReader...
以下是一个使用`XmlTextReader`读取XML文件的简单示例: ```vbnet Dim reader As New XmlTextReader("path_to_your_xml_file.xml") While reader.Read() If reader.NodeType = XmlNodeType.Element Then Console....
1. 加载XML文件:使用`SAXBuilder`类来读取XML文件并构建DOM树。如下所示: ```java import org.jdom2.Document; import org.jdom2.input.SAXBuilder; public class JDomReader { public static void main(String...
1. JAXB:JAXB 提供了一种将 XML 数据绑定到 Java 类和对象的方式,使得你可以直接通过对象操作 XML 数据。它支持从 XML 文档到 Java 对象的反序列化,反之亦然。在处理大型 XML 文件时,JAXB 可能不是最佳选择,...
1. **读取XML文件** - **XML结构**:XML文件由元素、属性、文本内容和命名空间组成。元素是最基本的构建块,通常包含其他元素或文本。 - **XML解析**:在C#中,我们可以使用几种方法来解析XML。最常用的是`System....
以下是一个基本的Java代码示例,演示了如何读取XML文件: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c....
本篇文章将深入探讨如何使用Java递归地读取XML文件。 首先,我们需要了解XML的基本结构。XML(eXtensible Markup Language)是一种标记语言,它的层次结构由元素(Element)、属性(Attribute)以及文本内容(Text ...