NanoXML组件解析xml实例

简介:

NanoXML组件解析xml实例:

noaoxml组件对xml格式的字符串解析,效率很高

 

代码如下:

 

package com.yanek.demo.xml.test;

import java.util.Vector;

import javolution.context.ObjectFactory;
import net.n3.nanoxml.IXMLElement;
import net.n3.nanoxml.IXMLParser;
import net.n3.nanoxml.IXMLReader;
import net.n3.nanoxml.StdXMLReader;
import net.n3.nanoxml.XMLException;
import net.n3.nanoxml.XMLParserFactory;

import org.apache.log4j.Logger;

 

public class NanoXMLTest {

 private static Logger logger = Logger
   .getLogger(NanoXMLTest.class.getName());

 /**
  * @param args
  */
 public static void main(String[] args) {

 
  String config = "<actions id=/"123/" name=/"test/"><action path=/"/test/" class=/"com.mystruts.demo.LoginAction/"><forward name=/"success/" url=/"hello.jsp/"/><forward name=/"fail/" url=/"fail.jsp/"/></action><action path=/"/user/" class=/"com.mystruts.demo.UserAction/"><forward name=/"success/" url=/"list.jsp/"/><forward name=/"fail/" url=/"fail.jsp/"/></action></actions>";
  IXMLParser xmlParser = null;
  IXMLReader xmlReader = null;
  
  long a = System.currentTimeMillis();
  xmlParser = NanoXMLTest.XMLPARSER_FACTORY.object();
  
  xmlReader = StdXMLReader.stringReader(config);
  xmlParser.setReader(xmlReader);
  try {
   IXMLElement root = (IXMLElement)xmlParser.parse();
   
   System.out.println(root.getAttribute("id", ""));
   System.out.println(root.getAttribute("name", ""));
   
   Vector actions= root.getChildrenNamed("action");
   
   for (int i=0;i<actions.size();i++)
   {
    IXMLElement action = (IXMLElement)actions.elementAt(i);
    
    System.out.println(action.getAttribute("path", ""));
    System.out.println(action.getAttribute("class", ""));
    
    
    Vector forwards=action.getChildrenNamed("forward");
    for (int j=0;j<actions.size();j++)
    {
     
     IXMLElement forward = (IXMLElement)forwards.elementAt(j);
     
     System.out.println(forward.getAttribute("name", ""));
     System.out.println(forward.getAttribute("url", "")); 
    }
    
    
    
   }
   
   

   
  } catch (XMLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }  
  
  
  
 }

 public static ObjectFactory<IXMLParser> XMLPARSER_FACTORY = new ObjectFactory<IXMLParser>() {
  protected IXMLParser create() {
   try {
    return XMLParserFactory.createDefaultXMLParser();
   } catch (ClassNotFoundException e) {
    logger.error(e);
   } catch (InstantiationException e) {
    logger.error(e);
   } catch (IllegalAccessException e) {
    logger.error(e);
   }
   return null;
  }
 };

}

 

输出:

 

123
test
/test
com.mystruts.demo.LoginAction
success
hello.jsp
fail
fail.jsp
/user
com.mystruts.demo.UserAction
success
list.jsp
fail
fail.jsp

 

目录
相关文章
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
3267 1
|
前端开发 JavaScript
React 步骤条组件 Stepper 深入解析与常见问题
步骤条组件是构建多步骤表单或流程时的有力工具,帮助用户了解进度并导航。本文介绍了在React中实现简单步骤条的方法,包括基本结构、状态管理、样式处理及常见问题解决策略,如状态管理库的使用、自定义Hook的提取和CSS Modules的应用,以确保组件的健壮性和可维护性。
544 17
|
9月前
|
XML 数据采集 API
用Lxml高效解析XML格式数据:以天气API为例
免费Python教程:实战解析中国天气网XML数据,详解Lxml库高效解析技巧、XPath用法、流式处理大文件及IP封禁应对策略,助你构建稳定数据采集系统。
436 0
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
622 15
|
索引
【Flutter 开发必备】AzListView 组件全解析,打造丝滑索引列表!
在 Flutter 开发中,AzListView 是实现字母索引分类列表的理想选择。它支持 A-Z 快速跳转、悬浮分组标题、自定义 UI 和高效性能,适用于通讯录、城市选择等场景。本文将详细解析 AzListView 的核心参数和实战示例,助你轻松实现流畅的索引列表。
767 7
|
前端开发 UED
React 文本区域组件 Textarea:深入解析与优化
本文介绍了 React 中 Textarea 组件的基础用法、常见问题及优化方法,包括状态绑定、初始值设置、样式自定义、性能优化和跨浏览器兼容性处理,并提供了代码案例。
537 10
|
机器学习/深度学习 自然语言处理 数据管理
GraphRAG核心组件解析:图结构与检索增强生成
【10月更文挑战第28天】在当今数据科学领域,自然语言处理(NLP)和图数据管理技术的发展日新月异。GraphRAG(Graph Retrieval-Augmented Generation)作为一种结合了图结构和检索增强生成的创新方法,已经在多个应用场景中展现出巨大的潜力。作为一名数据科学家,我对GraphRAG的核心组件进行了深入研究,并在此分享我的理解和实践经验。
803 0
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
931 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1522 29
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
609 4

推荐镜像

更多
  • DNS