`
luoyexian
  • 浏览: 51293 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

解析xml

    博客分类:
  • java
阅读更多

1.获取xml的存放路径

   object 为xml的前缀名字 

package com.struts.common;

import java.net.URL;


public class BeansConstants {
	private BeansConstants() { 
	} 
	private static BeansConstants read = new BeansConstants(); 
	public static BeansConstants getInstance() { 
		return read; 
	} 

	public static String getPath(String object) { 
		String src ="com/struts/bean/"+object+".hbm.xml";
		URL url = BeansConstants.class.getClassLoader().getResource("");
		String xml = url.getPath() + src; 
		return xml; 
	} 
}

 2.通过dom4j解析xml的内容

    解析xml节的的为calss属性为table的内容

package com.struts.common;

import org.dom4j.Document;
import org.dom4j.Attribute;
import java.util.List;
import java.util.Iterator;
import java.io.*;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader; 
public class Dom4JParser{
	 public String modifyDocument(File inputXml){
		 String tablevalue="";
		 try{
			 SAXReader saxReader = new SAXReader();
			 Document document = saxReader.read(inputXml);
			 List list = document.selectNodes("//class/@table" );
			 Iterator iter=list.iterator();
			 while(iter.hasNext()){
				 Attribute attribute=(Attribute)iter.next();
				 tablevalue = attribute.getValue();
			 }
		 }catch(DocumentException e){
			 System.out.println(e.getMessage());
		 }
		return tablevalue;
     }
	 
	 public static void main(String[] argv){
		 System.out.println(DateUtil.getStandardDateTime());
		 String src = BeansConstants.getPath("TWarrantApply");
		 Dom4JParser dom4jParser=new Dom4JParser();
		 String tablevalue = dom4jParser.modifyDocument(new File(src));
		 System.out.println(tablevalue);
		 System.out.println(DateUtil.getStandardDateTime());
     }
}

 

上面事例解析时间需要2秒多。感觉是时间太了。但还找不到好的方法来缩短解析时间,如果谁好的方法请指教下

 

3.通过sax+jdom解析xml

public String getTableByObject(String object){
		//构造文档对象
		SAXBuilder sb=new SAXBuilder(); 
	    Document doc = null;
	    try {
			
			doc = (Document) sb.build(new FileInputStream(BeansConstants.getPath(object)));
		} catch (JDOMException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} 
		
		//获取根元素
	    Element root=doc.getRootElement(); 
	    
	    //获取子节点
	    Element child = root.getChild("class");
	    
	    String value = child.getAttributeValue("table");
	    
		return value;
    }
	
	public String[] getFieldByObject(String object,String firstChild,String secondChild){
		
		//构造文档对象
		SAXBuilder sb=new SAXBuilder(); 
	    Document doc = null;
	    try {
			
			doc = (Document) sb.build(new FileInputStream(BeansConstants.getPath(object)));
		} catch (JDOMException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} 
		
		//获取根元素
	    Element root=doc.getRootElement(); 
	    
	    //获取子节点
	    Element child = root.getChild(firstChild);
	    
	    //获取最小子元素
	    List list=child.getChildren(secondChild);
	    
	    int j =0;
	    for(int i=0;i<list.size();i++){ 
	    	Element element=(Element)list.get(i);
	    	String value1 = element.getAttributeValue("type");
		       if(value1.indexOf("String") >-1){
		    	   j++;
		       }
	    }
	    
	    //声明一个二为树组
	    String arraylist[] = new String[j];
	    
	    j =0;
	    //循环获取元素的健子对值,并存入二维数组
	    for(int i=0;i<list.size();i++){ 
	       Element element=(Element)list.get(i);
	       String value = element.getAttributeValue("name");
	       String value1 = element.getAttributeValue("type");
	       if(value1.indexOf("String") >-1){
	    	   arraylist[j] = value;
	    	   j++;
	       }
	       
	    }
	    
		return arraylist;   
	}

 

 

4.通过sax解析xml  获取下拉框

   selections.xml

<months>
		<month value="01">一月</month>
		<month value="02">二月</month>
		<month value="03">三月</month>
		<month value="04">四月</month>
		<month value="05">五月</month>
		<month value="06">六月</month>
		<month value="07">七月</month>
		<month value="08">八月</month>
		<month value="09">九月</month>
		<month value="10">十月</month>
		<month value="11">十一月</month>
		<month value="12">十二月</month>
	</months>
	<years>
		<year value="2008">2008</year>
		<year value="2009">2009</year>
		<year value="2010">2010</year>
		<year value="2011">2011</year>
	</years>
	<posts>
		<post value="01">经理</post>
		<post value="02">部长</post>
		<post value="03">销售员</post>
	</posts>

 

 

package org.kwb.furniture.common;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
import java.net.URL;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;


public class Selection {
	private Selection() { 
	} 
	private static Selection read = new Selection(); 
	public static Selection getInstance() { 
	return read; 
	} 

	public static String getPath() { 
		URL url = Selection.class.getClassLoader().getResource(""); 
		String xml = url.getPath() + "/selections.xml"; 
		return xml; 
		} 

	public static String[][] getSelection(String selectname){
		
		//构造文档对象
		SAXBuilder sb=new SAXBuilder(); 
	    Document doc = null;
	    try {
			
			doc = sb.build(new FileInputStream(getPath()));
		} catch (JDOMException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} 
		
		//获取根元素
	    Element root=doc.getRootElement(); 
	    
	    Namespace ns = root.getNamespace();
	    
	    //根据名字获取跟元素下面的子元素
	    Element month = root.getChild(selectname,ns);
	    
	    //取名字的所有元素 
	    List list=month.getChildren();
	    
	    //声明一个二为树组
	    String arraylist[][] = new String[list.size()][2];
	    
	    //循环获取元素的健子对值,并存入二维数组
	    for(int i=0;i<list.size();i++){ 
	       Element element=(Element)list.get(i);
	       String key = element.getAttributeValue("value");
	       String value = element.getValue();
	       arraylist[i][0] = key;
	       arraylist[i][1] = value;
	    }
	    
		return arraylist;   
	}

}

 

分享到:
评论

相关推荐

    PB 解析XML (代码案例)

    标题中的“PB 解析XML”指的是使用PowerBuilder(简称PB)这一编程工具处理XML数据的过程。PowerBuilder是一款广泛用于开发企业级应用的可视化编程环境,它支持多种数据格式,包括XML。XML(eXtensible Markup ...

    C++解析xml文件

    本文将深入探讨如何使用C++来解析XML文件,主要围绕“C++实现对xml文件的解析”这一主题展开。 XML文件通常包含一系列元素,每个元素都有开始标签、结束标签和可能的属性。C++中解析XML文件的方法多种多样,这里...

    解析xml的jar包

    解析XML是将XML文档转换为程序可以理解的数据结构的关键步骤。本文将深入探讨XML解析的基本概念、常用方法以及相关的Java库——JDOM。 XML文档由一系列元素构成,每个元素都包含标签、属性和内容。解析XML的过程...

    delphi解析xml文件实例

    本实例将详细探讨如何在Delphi 7中解析XML文件。 首先,我们需要引入必要的单元,如`Classes`和`XMLDoc`,它们包含了处理XML的基本类。`Classes`单元提供了基础的TStringList等类型,而`XMLDoc`单元则包含了...

    C++解析xml文档或者xml字符串方法

    在C++中,解析XML文档或XML字符串是常见的任务,特别是在需要与JavaScript或其他不支持指针的语言交互时。本文将详细介绍如何在Visual Studio 2010环境下利用Microsoft的MSXML库来处理XML数据。 首先,让我们看看...

    STM32解析XML

    在本文中,我们将深入探讨如何在STM32F107上使用minixml库解析XML(可扩展标记语言)文档,这对于那些初次尝试在嵌入式环境中处理XML数据的开发者来说,是非常有价值的。 XML是一种通用的数据交换格式,它允许结构...

    STM32解析XML完整工程.zip

    在本项目"STM32解析XML完整工程.zip"中,重点是实现STM32利用软件资源处理XML(eXtensible Markup Language)文件。XML是一种用于标记数据的标准格式,常用于存储和传输结构化数据,例如配置文件、设备通信协议等。 ...

    PB 解析xml格式串

    在“PB解析xml格式串”的主题中,我们主要关注如何将XML格式的数据转换为Protocol Buffers的二进制格式,以便于高效地存储和传输。以下是一些相关的知识点: 1. **Protocol Buffers介绍**:PB是一种高效的序列化...

    PB解析XML字符串 把XML 变为数据窗口

    标题中的“PB解析XML字符串 把XML 变为数据窗口”指的是使用PowerBuilder(PB)这一编程工具,处理XML格式的数据,并将其转换成数据窗口对象的过程。数据窗口是PowerBuilder中的一个核心组件,用于显示、编辑和管理...

    domino通过lotusscript解析xml

    在标题“domino通过lotusscript解析xml”中,我们关注的重点是使用Lotusscript来解析XML文件。解析XML意味着读取其结构并从中提取所需的信息。在Lotusscript中,我们可以使用内置的XML处理对象,如`XMLDocument`,来...

    JAVA JAXB 解析XML嵌套子节点为字符串

    使用JAXB解析XML时,我们首先需要创建一个Java类模型,这个模型反映了XML文档的结构。每个XML元素对应一个Java类,类的属性对应元素的属性或子元素。例如,如果XML中有以下结构: ```xml &lt;text&gt;Some text here ...

    C#解析XML文件并用WinForm显示

    在本文中,我们将深入探讨如何使用C#编程语言解析XML文件,并将其内容在Windows Forms(WinForm)应用程序中展示。XML(eXtensible Markup Language)是一种数据存储和交换的标准格式,而C#是Microsoft .NET框架下...

    使用javascript解析xml文件或xml格式字符串中文WORD版

    资源名称:使用Javascript解析xml文件或xml格式字符串 中文WORD版   内容简介: 本文档主要讲述的是使用Javascript解析xml文件或xml格式字符串;javascript中,不论是解析xml文件,...

    java 解析xml 多级

    Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:...

    android下解析xml文件的demo

    本教程将详细介绍如何在Android环境下解析XML文件,以"ReadXMLDemo"为例,展示具体步骤和关键知识点。 首先,XML(eXtensible Markup Language)是一种自定义标记语言,它的结构清晰,易于读写,适合于数据交换和...

    STM32使用ezxml解析XML文件

    4. **解析XML**:使用ezxml库的核心函数`ezxml_parse()`解析XML文件。这个函数会返回一个ezxml_t类型的根节点,代表整个XML文档。然后,可以使用`child()`, `tag()`, `attr()`, `text()`等方法来遍历和访问XML树。 ...

    解析XML特殊字符方法

    有两种主要方法来解析XML中的特殊字符: **方法一:使用实体引用** 实体引用是XML中最常见的处理特殊字符的方式。当你需要在XML文档中插入特殊字符时,可以使用对应的实体引用。比如,如果你想在文本中包含一个...

    JAVA 解析XML生成XML文档实例

    JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML

    js解析XML文件

    JS 解析 XML 文件 作为一名 IT 行业大师,我将从给定的文件中生成相关知识点,涵盖 JS 解析 XML 文件的各种方面。 JS 解析 XML 文件的必要性 在当前的 web 开发中,XML 文件广泛应用于数据交换和存储。因此,如何...

    纯C语言解析xml字符串

    纯C语言解析xml字符串,有实例,保证可用,含makefile xmlparse.c xmlparse.h testxml.c 目录:/export/home/chcard/testxml 日志:/export/home/chcard/log testxml.c 是一个测试用例,包含了常用的方法,并有注解 ...

Global site tag (gtag.js) - Google Analytics