`
luoyexian
  • 浏览: 51625 次
  • 性别: 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数据。 首先,让我们看看...

    PB 解析xml格式串

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

    STM32解析XML

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

    STM32解析XML完整工程.zip

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

    domino通过lotusscript解析xml

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

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

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

    使用JDOM解析XML文件

    本篇文章将深入探讨如何使用JDOM解析XML文件。 首先,我们需要理解JDOM的基本结构。JDOM通过Document对象表示整个XML文档,Element代表XML元素,Attribute表示元素属性,Text表示元素内的文本内容。这些类构成了...

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

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

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

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

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

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

    java 解析xml 多级

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

    android下解析xml文件的demo

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

    解析XML特殊字符方法

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

    JAVA 解析XML生成XML文档实例

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

    STM32使用ezxml解析XML文件

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

    js解析XML文件

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

Global site tag (gtag.js) - Google Analytics