`

java 读取 创建 XML文件

阅读更多

最近需整理,java创建xml文档,java读取xml文件
各个独立的系统之间要进行数据交互,比如说c做的系统,要与java做的系统弄个数据接口
用xml封装数据进行交互,暂时从老大那里听到的,所以现在上班时间整理下,速战速决,还  要 弄其他的东西,(网上资料一大堆)

  1--java创建xml文档





  2--java 读取xml文件


  xml文件
  <?xml version="1.0" encoding="GB2312" standalone="no"?>
<books>
    <book name = "think in java 第四版" >
        <name>美国人牛人</name>
        <price>108元</price>
    </book>
   <book name = "jmaki ajax">
        <name>sun</name>
        <price>56.89元</price>
    </book>
</books> 




  java代码

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.Hashtable;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
/**
 * 描述:创建xml对象,读取xml数据,将信息设置到vo对象中
 * @author oyp 2009-12-17
 */
public class XMLReader {
	//key=vo标示符,value =vo对象
	public Hashtable<String,Object> hashTableClasses = new Hashtable<String,Object>(); 
	public XMLReader() throws Exception, Exception {
		//key=vo属性,value=vo属性值
		Hashtable<String,Object> hashTableClass = new Hashtable<String,Object>();
		// 1--得到DOM解析器的工厂实例javax.xml.parsers.DocumentBuilderFactory;
		// 类的实例就是我们要的解析器工厂
		DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
		try {
			// 2--从DOM工厂获得DOM解析器DocumentBuilder
			// DocumentBuilder的constructor是protected,不能new的,要通过工厂来创建
			// 复习下java作用域。。。。
			DocumentBuilder dombuilder = domfac.newDocumentBuilder();
			// 3--把要解析的XML文档转化为输入流,以便DOM解析器解析它,(给它捅根管道)
			InputStream is = new FileInputStream("D:\\liu.xml"); // xml 的路径
			// 4--解析XML文档的输入流,得到一个Document
			Document doc = dombuilder.parse(is);
			// 5--得到XML文档的根节点 在DOM中根节点只有一个且此对象为org.w3c.dom.Element
			Element root = doc.getDocumentElement();
			// 6--得到节点的子节点
			NodeList books = root.getChildNodes();
			if (books != null) {
				for (int i = 0; i < books.getLength(); i++) {
					Node book = books.item(i);
					if (book.getNodeType() == Node.ELEMENT_NODE) {
						// 7--取得节点的属性值!!属性值
						String classname = book.getAttributes()
								.getNamedItem("name").getNodeValue();
						System.out.println(classname);
						// 注意,节点的属性也是它的子节点。它的节点类型也是Node.ELEMENT_NODE

						// 8--轮循子节点!!子节点
						for (Node node = book.getFirstChild(); node != null; node = node
								.getNextSibling()) {
							if (node.getNodeType() == Node.ELEMENT_NODE) {
								if (node.getNodeName().equals("name")) {
									String name = node.getNodeValue();
									String name1 = node.getFirstChild()
											.getNodeValue();
									System.out.println("这个值是空的:" + name);
									System.out
											.println("xml里面的name标签值:" + name1);
									hashTableClass.put("name", name1);
								}
								if (node.getNodeName().equals("price")) {
									String price = node.getFirstChild()
											.getNodeValue();
									System.out.println("xml里面的price标签值:"
											+ price);
									hashTableClass.put("price", price);
								}
								
								Book b = setBook(hashTableClass);
								hashTableClasses.put(classname, b);
								
							}
						}
					}
				}
			}
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) throws Exception {
		System.out.println(new XMLReader().hashTableClasses);
	}
	
	public Book setBook(Hashtable hash) {
		Field[] fields = Book.class.getDeclaredFields();
		Book book = new Book();
		for (int i = 0 ; fields!=null&&i < fields.length ; i++)  {
			Field field = fields[i];
			if (hash.containsKey(field.getName())) {
				try {
					field.setAccessible(true);
					//如果对属性的类型还需要判断,可以自定义一个函数对field.getType()进行判断
					field.set(book, hash.get(field.getName()));
				} catch (IllegalArgumentException e) {
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					e.printStackTrace();
				}
			}
		}
		return book;
	}

}
class Book {
	private String name;
	private String price;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPrice() {
		return price;
	}
	public void setPrice(String price) {
		this.price = price;
	}
}


未完待续
干正事了 还要看jmaki,时间啊...






分享到:
评论

相关推荐

    java 创建生成读取 xml

    用java创建生成xml文件,可以对其进行编写和读取xml文件内容

    java读取解析xml文件实例

    主要介绍了java读取解析xml文件实例,本文创建了一个XML解析类同时讲解了循环节点输出方式,需要的朋友可以参考下

    java自动创建和读取XML文档

    这是一个MyEclipse项目,里面详细写出了自动创建XML文档和读取XML文档的代码,注稀。

    java xml.java操作XML文档

    java xml.java操作XML文档,简单易用,快速生成

    Java实现PDF读写(Itext)与解析XML读写(Dom4j)

    JavaFileDemo文件夹为项目文件 zhouyl为生成的PDF,还有PNG图片来源 一、用JAVA完成了PDF读写(IText的应用) ...3、创建XML文件 D:/zhouyl/333.xml 4、读取XML文件 D:/zhouyl/123.xml生成相应格式的D:/zhouyl/333.VDS

    通过Dom4j创建和读取xml文件下载

    通过Dom4j创建和读取xml文件下载

    Java and XML, 3rd Edition

    您将学习到如何为同步的内容创建、读取或者修改RSS feeds,以及如何运用XML、Ajax和Adobe Flash来为下一代的网络站点注入活力。 书中的主题如下: *XML基础,包括DTD、命名空间(namespace)、XML Schema和...

    xml入门 解析与创建 入门练习

    需要在lib下拷入dom4j包,jdom.jar包。路径需要自己改。四种方式解析创建xml文件,原始的遍历xml,以及一般运用读取,更新xml。

    Java解析XML工具类--(java源码)

    * 本类是专门解析XML文件的,主要用于为系统读取自己的配置文件时提供最方便的解析操作 * @author HX * */ public class XmlManager { /** * 得到某节点下某个属性的值 * @param element 要获取属性的...

    JAVA与XML.rar

    您将学习到如何为同步的内容创建、读取或者修改RSS feeds,以及如何运用XML、Ajax和Adobe Flash来为下一代的网络站点注入活力。 书中的主题如下: XML基础,包括DTD、命名空间(namespace)、XML Schema和数据格式...

    Java IO流:从xml文件中读取数据,在程序中创建对象

    Java IO流:从xml文件中读取数据,在程序中创建对象

    Android读取XML文件中的数据

    本文实例为大家分享了Android读取XML文件中数据的具体代码,供大家参考,具体内容如下 读取XML中存储的数据。将xmlfile.xml存放在assets文件夹中。在activity_main.xml中创建一个textview,用来显示读取到的数据。 ...

    Java中XML的解析与创建方法实例(题目见描述)

    1 编程创建person.xml文件,存储多条姓名、密码、年龄、邮箱信息 解析person.xml 修改person.xml -  &lt;username&gt;susan&lt;/username&gt;  &lt;password&gt;098765&lt;/password&gt;  &lt;age&gt;34&lt;/age&gt;  &lt;email&gt;susan@addj....

    JAVA_API1.6文档(中文)

    javax.imageio.event Java Image I/O API 的一个包,用于在读取和写入图像期间处理事件的同步通知。 javax.imageio.metadata 用于处理读写元数据的 Java Image I/O API 的包。 javax.imageio.plugins.bmp 包含供...

    JAVA上百实例源码以及开源项目

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    XML Schema教程

    XML Schema 教程 XML Schema 是基于 XML 的 DTD 替代者。...在此教程中,你将学习如何在应用程序中读取和创建 XML Schema 语言,XML Schema 为何比 DTD 更加强 大,以及如何在您的应用程序中使用 XML Schema。

    JavaAPI1.6中文chm文档 part1

    javax.imageio.event Java Image I/O API 的一个包,用于在读取和写入图像期间处理事件的同步通知。 javax.imageio.metadata 用于处理读写元数据的 Java Image I/O API 的包。 javax.imageio.plugins.bmp 包含供...

    JavaWord类库操作API_Free Spire.Doc for Java_5.1.0

    2.应用场景:Word文档创建、编辑、转换、预览及保存等需求的程序设计、系统等。 3.适用人群:所有(包括初学者及任何用途的程序发布等) 4.特点:纯后端代码实现接口调用。无需依赖任何其他第三方插件,完全独立运行...

    基于Java的XML解析与反射设计模式.doc

    xstream可以完美转换xml,与以往的解析xml工具dom相比,xstream是一个易用的、开源 的库,使用起来简单、小巧,容易理解,可以轻易的将java对象和xml文档相互转换,而 且可以修改某个特定的属性和节点名称。...

    java源码包---java 源码 大量 实例

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

Global site tag (gtag.js) - Google Analytics