`
Luob.
  • 浏览: 1592298 次
  • 来自: 上海
社区版块
存档分类
最新评论

W3C 解析XML

    博客分类:
  • XML
阅读更多
W3C解析  负责  XML

package com.itheima.xml;

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Iterator;
import java.util.Vector;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;

import com.itheima.xml.bean.Plant;

public class TextW3CParseXML {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String fileName="F:/plant.xml";  //已经存在的 xml文件
		TextW3CParseXML t=new TextW3CParseXML();
		try {
			Vector v=t.readXMLFile(fileName);
			Iterator it=v.iterator();
			while(it.hasNext()){
				Plant s=(Plant)it.next();
				System.out.println(s.getId()+"\t"+s.getName()+"\t"+s.getDesc());
			}
			
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("读取XML文件出错:"+e.getMessage());
		}
		String outfile="F:/plant1.xml";  //复制到这个文件中
		t.writeXMLFile(outfile);
	}
	
	Vector plant_Vector;
	
	private Vector readXMLFile(String fileName) throws Exception{
		//获取dom解析器的工厂实例 
		DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
		
		DocumentBuilder build=dbf.newDocumentBuilder();
		
		Document doc=build.parse(fileName);
		
		Element root=doc.getDocumentElement();
		NodeList plantList=root.getElementsByTagName("plant");
		plant_Vector=new Vector();
		System.out.println(plantList.getLength());
		
		for (int i = 0; i < plantList.getLength(); i++) {
			Element element=(Element)plantList.item(i);
			
			Plant plant=new Plant();
			plant.setId(element.getAttribute("id"));
			
			NodeList names=element.getElementsByTagName("name");
			Element e=(Element)names.item(0);
			Node t=e.getFirstChild();
			plant.setName(t.getNodeValue());
			
			NodeList desc=element.getElementsByTagName("description");
			e=(Element)desc.item(0);
			t=e.getFirstChild();
			plant.setDesc(t.getNodeValue());
			
			plant_Vector.add(plant);
		}
		return plant_Vector;
		
	}
	
	//将文档写入到XML文件中
	public static void callWriteXmlFile(Document doc,Writer w,String encoding){
		try {
			Source source=new DOMSource(doc);
			Result result=new StreamResult(w); //创建结果对象
			Transformer transformer=TransformerFactory.newInstance().newTransformer(); //创建转换器
			transformer.setOutputProperty(OutputKeys.ENCODING, encoding);
			transformer.transform(source, result); //对文档进行转换
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	
	//将 XML文件复制到指定文件
	private void writeXMLFile(String fileName){
		DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
		DocumentBuilder builder=null;
		try {
			builder=dbf.newDocumentBuilder();
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Document doc=builder.newDocument();
		Element root=doc.createElement("plants");
		doc.appendChild(root);
		for (int i = 0; i < plant_Vector.size(); i++) {
			Plant plant=(Plant)plant_Vector.get(i);
			Element element=doc.createElement("plant");
			element.setAttribute("id", plant.getId());
			root.appendChild(element);
			
			Element name=doc.createElement("name");
			element.appendChild(name);
			Text tname=doc.createTextNode(plant.getName());
			name.appendChild(tname);
			
			Element desc=doc.createElement("description");
			element.appendChild(desc);
			Text tdesc=doc.createTextNode(plant.getDesc());
			desc.appendChild(tdesc);
			
		}
		try {
			FileOutputStream fos=new FileOutputStream(fileName);  //创建文件输出流
			
			OutputStreamWriter outWriter=new OutputStreamWriter(fos);
			callWriteXmlFile(doc, outWriter, "gb2312");
			outWriter.close();
			fos.close();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
		
	}
	

}

0
0
分享到:
评论

相关推荐

    xml.rar_XML c语言_c语言 xml_resolver_xml解析 c_解析xml

    1. **语法验证**:确保XML文档符合W3C标准,包括正确的嵌套、关闭标签、属性值引号等。 2. **命名规则**:XML元素和属性名必须遵循一定的命名规则,不能以数字开头,不能包含特殊字符。 3. **编码识别**:XML文档...

    w3c 生成xml 换行实例

    "w3c 生成xml 换行实例" w3c 生成xml 换行实例是使用 Java 语言通过 DOM(Document Object Model)来生成一个 XML 文档的示例代码。下面是该示例代码的详细解释: 首先,需要导入必要的包,包括 java.io、javax....

    w3c的xml的解析器

    这是xml(10年内不会失业的技术),英语不是很差的就能看懂

    w3c 生成xml 文件

    W3C(World Wide Web Consortium)是负责制定XML标准的组织,它提供了DOM(Document Object Model)API来处理XML文档。本篇文章将详细介绍如何使用Java结合W3C DOM API来生成XML文件。 首先,生成XML文件的基本步骤...

    android下解析xml文件的demo

    - 引入必要的库:`import org.w3c.dom.Document; import javax.xml.parsers.DocumentBuilderFactory;` - 创建`DocumentBuilderFactory`实例,通过`newDocumentBuilder()`方法获取`DocumentBuilder`。 - 使用`parse()...

    W3C XML Schema

    **W3C XML Schema**,全称为World Wide Web Consortium (W3C)的XML Schema Definition Language,是XML文档的一种标准化验证机制。它为XML(eXtensible Markup Language)提供了强大的结构化定义语言,用于描述XML...

    PB解析xml指定路径的节点内容

    XPath是W3C标准,提供了访问XML文档的强大方式,包括选择节点、属性和文本。 在PowerBuilder中,我们可以使用XML对象来操作XML文件。这个例子中,开发者创建了一个通用的函数或过程,能够接收一个XPath表达式作为...

    java dom 解析 xml 实例

    Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...

    使用java解析XML文件,解析完之后将解析结果导入mysql数据库中

    在Java编程环境中,解析XML文件是一项常见的任务,特别是在数据处理和集成中。XML(Extensible Markup Language)是一种结构化数据格式,广泛用于存储和传输数据。本教程将介绍如何使用Java解析XML文件,并将解析...

    XML(W3C标准).rar_w3c_w3c webservi_xml_xml XML_xml w3c

    XML的语法严格且自描述,使得任何支持XML的软件都能理解和解析XML文档。XML文档由元素(Element)、属性(Attribute)、文本内容等构成。元素是XML文档的基本构建块,通过尖括号包围,如 `&lt;element&gt;`。属性是附加在...

    WCdom解析xml

    ### WCdom解析XML #### 知识点概览 1. **XML文档结构与DOM模型** 2. **W3C DOM API介绍** 3. **Java中的DOM解析实现** 4. **示例代码详解** #### XML文档结构与DOM模型 XML(可扩展标记语言)是一种用于标记数据...

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

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

    java解析xml例子

    本篇文章将深入探讨如何在Java中解析XML,以帮助你理解和实践相关知识。 一、DOM解析器 DOM(Document Object Model)解析器是Java中的一种常用方法,它将整个XML文档加载到内存中,形成一个树形结构。以下是一个...

    java_dom解析xml xml java

    标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...

    java解析XML文件

    Java解析XML文件是Java开发中常见的一项任务,XML(eXtensible Markup Language)作为一种可扩展标记语言,常用于数据交换、配置存储等场景。在Java中,有多种方式可以解析XML文件,主要包括DOM(Document Object ...

    经典的DOM解析XML范例

    1. `org.w3c.dom`:这是W3C推荐的DOM接口,用于处理XML文档的标准规划。 2. `org.xml.sax`:提供了一套事件驱动的API,用于解析XML文档,实现SAX解析。 3. `javax.xml.parsers`:包含解析器工厂类,如`...

    java在线解析xml

    1. DOM解析器:DOM是W3C推荐的一种解析XML的标准方式,它将整个XML文档加载到内存中形成一个树形结构,称为DOM树。通过DOM解析器,开发者可以轻松地遍历整个文档,访问任何元素或属性。优点是可以任意位置访问,但...

    java解析xml的四种经典方法

    DOM是W3C制定的一种标准,它将XML文档转化为一个对象树,允许开发者通过遍历树形结构来访问和修改XML文档的任意部分。DOM解析器会一次性加载整个XML文档到内存,所以适用于小型XML文档。在上述代码中,我们使用了...

Global site tag (gtag.js) - Google Analytics