Java 语言对XMl 格式文件的 纯解析

原创 2016年06月29日 21:13:02

目的: 解析XML文件,把解析出的文件写到文档中保存

XML: 文件是一种可扩展标记语言,是很像HTML的标记语言;XML的设计宗旨是传输数据,而不是现实数据;XML的标签并没有被预定义,需要使用者自行定义,XML因此被设计成

一种具有自我描述性的语言。

XML和HTML之间的区别:

XML不是HTML的替代

XML被设计用来传输和存储数据,其焦点是数据的内容

HTML被设计用来显示数据,其焦点是数据的外观

XML旨在传输数据,HTML旨在显示数据

XML是各种应用程序之间进行数据传输最常用的工具。

看下面一个简单的实例:

实例是 Jani 写给 Tove 的便签,存储为 XML:

<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

XML的解析分析:

XMl是用来存储数据的,标签是数据的名称,两个标签之间的信息为标签的内容。这里为大家事例对XML文件通用的解析格式:标签名:内容。对XML文件的纯解析,基本思想是每行每行的进行解析,而每行要么有一对尖括号,要么有两对尖括号,每行都有一个共同的特点就是:每行的末尾都有一个换行符 ‘’\r\n’’;解析时用变量记录每一个 ’<’ 和每一个 ’>’ 。

当记录到第一个 ‘>’ 的时候,把尖括号中的字符串输出,当遇到换行符 ‘ \r\n’ 的时候,把记录 ‘<’ 和 ‘>’ 的值,还有记录字符串的值 全都置0,然后开始进行解析下一行,解析时遇到第二个 ‘<’ 时 把记录的两个尖括号之间的字符串输出,然后等到遇到这一行的换行符 ’\r\n’ 时,把用于记录的变量全部置 0  

我这里把代码进行了输出:

代码如下:

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Demo {
	public static void mian(String args[]){
		String path = "F:/XML/nod.xml";
		String topath="F:/XML/nod1.txt";
		fun(path,topath);
		
	}
	
	/**
	 * 
	 * @param path
	 * @param topath
	 * 解析xml
	 */
	public static void fun(String path,String topath){
		FileReader read = null;
		FileWriter writ = null;
		try{
			read = new FileReader(path);
			writ = new FileWriter(topath);
			
			
			char c,c1 = 0,c2 = 0;
			String str;
			String ss="";
			String ss1="";
			String ss2="";
			String ss3="";
			int ct=0,ct1=0,ct2=0;
			int a=0;
			while(true){ 	//单个读取字符
				int temp = read.read();
				if (temp == -1) {
					break;
				}
				c= (char)temp;
	            str = String.valueOf(c);
	          
	            /**
	             * 当ss为换行时,每行的内容已解析好,此时开始下一行内容的解析,把所有值重置,开始下一行
	             */
	            if(ss.equals("\r\n")){	
	            	ss="";
	            	ct1=0;
	            	ct2=0;		  
	            	writ.write("\r\n");
	            	System.out.println();
	            //	continue;
	            	
	            }
	            
	            /**
	             * 第一次碰到<退出,第二次碰到,输出每行<>asd<>中的内容:asd
	             */
	            if(c=='<'){
	            	ct1++;
	            	if(ct1==2){
	            		
	            		writ.write(" : ");
	            		writ.write(ss);
	            		System.out.print(ss);
	            		ss="";		            		
	            	}
	            	continue;
	            }
	            /**
	             * 第一次碰到>,输出每行第一个<>中的内容
	             */
	            if(c=='>'){
	            	ct2++;
	            	if(ct2==1){
	            		System.out.print(ss);
	            		writ.write(ss);
	            		ss="";		            		
	            	}
	            	continue;
	            }
	            /**
	             * 当碰到每行最后一个>时,此时ss的内容为第二个<>中的内容,清空ss,让ss接收换行符\r\n
	             */
	           if(ct1==2&&ct2==2){
	        	   ss="";
	        	   ct1=0;
	        	   ct2=0;
	           }
	            ss+=str;		            	
	            
	            

			}
			
		}catch(IOException e){
			e.printStackTrace();
		}finally{
			if(read!=null){
				try{
					read.close();
					writ.close();
				}catch(IOException e){
					e.printStackTrace();
				}
			}
		
		}
	}

继续总结中~~~微笑
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Sun_Ru/article/details/51785988

vc++6.0解析xml格式文件

  • 2010年01月28日 11:05
  • 8.68MB
  • 下载

c语言对单片机很好用

  • 2009年09月07日 17:11
  • 1.04MB
  • 下载

使用Java解析XML文件或XML字符串的例子

本文由Markdown语法编辑器编辑完成。经验与教训: 因为是Java项目,未加载特定的jar包,而导致在解析XML文件和字符串时,发生了ClassNotFoundException。 在使用dom...
  • inter_peng
  • inter_peng
  • 2017-09-16 11:36:18
  • 358

C语言解析.XML文件

最近手头上有个活在忙,中间很重要的一部分就是用C语言将.XML文件中想要的key和value读出来,与之前已有的值进行比较。 核心的.XML文件的格式如下: zzz xxx ...
  • w632138645
  • w632138645
  • 2015-11-05 19:13:01
  • 4115

LotusScript读写XML

  • 2013年08月21日 10:04
  • 18KB
  • 下载

Java使用SAM解析XML

上一篇文章中讲述了如何使用DOM解析XML,这篇文章讲一下使用SAM(Simple API for XML)解析XML. XML文件如下: java入门 35.9 java精通 89.6...
  • jayyuz
  • jayyuz
  • 2015-12-05 22:42:40
  • 577

C语言对Java的学习有什么用

C语言和Java既有区别,又有联系。这两种语言均为编程语言,编程思想相近。由于Java比C语言出现的更晚,Java中有许多语法也是参照C语言进行设计的,从这一点来说,学C语言是对学Java有很大帮助的...
  • Viki0205
  • Viki0205
  • 2017-02-28 20:59:51
  • 171

stax和Do4j解析xml文件,并输出txt,zip,gz格式文件

stax和Do4j解析xml文件,并输出txt,zip,gz格式文件
  • SuitBeggar
  • SuitBeggar
  • 2017-04-20 11:39:15
  • 248

C语言操作xml文件的学习总结

下载并安装libxml2 下载地址:ftp://xmlsoft.org/libxml2/ 下载最新的版本,我下载的是libxml2-2.9.1.tar.gz。下载后将文件解压到合适的位置,进入...
  • wangrunhuan
  • wangrunhuan
  • 2017-11-29 15:50:56
  • 314

纯C语言XML解析器

精短高效的XML解析器,纯C单一程序,应用于银行的国税库行横向联网接口系统中,稳定可靠,运行速度飞快,非相应的JAVA程序可比.以下为大部分源码:/* Copyright (c) 2005 wzs ...
  • jjyyhema
  • jjyyhema
  • 2010-02-02 11:14:00
  • 15975
收藏助手
不良信息举报
您举报文章:Java 语言对XMl 格式文件的 纯解析
举报原因:
原因补充:

(最多只允许输入30个字)