我是蒙古人--XML解析

1,XML(EXtensible Markup language)可扩展标记语言

2,我们经常用到的编码方式:

(1)UTF-8:全球通用

(2)GB2312: 简体中文

(3)GBK:简体中文+繁体

(4)big5:繁体中文,台湾:繁体

(5)ISO-8859-1:不支持中文 数据库层面(latin 拉丁文)

3,注意:

    一个XML 文档只能有一个跟节点

4,XML中的注释:

    <!--快捷键:Ctrl+shift+/-->

5,Dom 解析(Document Object Model)文档对象模型

   Xml文档代码如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<books>
    <book id="第一">
        <bookname>高级数学</bookname>
        <bookprice>86</bookprice>
        <bookauther>孔继师</bookauther>
        <bookversion>第二版本</bookversion>
    </book>
    <book id="第二">
        <bookname>高级英语</bookname>
        <bookprice>78</bookprice>
        <bookauther>色日古楞</bookauther>
        <bookversion>第6版本</bookversion>
    </book>
    <book id="第三">
        <bookname>焊接技术</bookname>
        <bookprice>45</bookprice>
        <bookauther>湖色冷</bookauther>
        <bookversion>第2版本</bookversion>
    </book>

    <book id="004">
        <bookname>原子分离学</bookname>
        <bookprice>96</bookprice>
        <bookauther>张明曾</bookauther>
        <bookversion>最终版本</bookversion>
    </book>
</books>

java   Dom解析代码如下:

package cn.day2;

import java.io.IOException;

import javax.naming.spi.DirStateFactory.Result;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
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.xml.sax.SAXException;

public class Myxml {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, TransformerException {
                                //1,创建解析器工厂
				DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
				//2,创建解析器对象
				DocumentBuilder builder = factory.newDocumentBuilder();
				//3,指向硬件文档,形成Document对象
				Document parse = builder.parse("src/books.xml");
				//4,先指向NodeList集合对象,循环输出个个元素
				NodeList list = parse.getElementsByTagName("book");
				for (int i = 0; i <list.getLength(); i++) {
					Element item = (Element)list.item(i);
					String string = item.getAttribute("id");
					String value1 = item.getElementsByTagName("bookname").item(0).getFirstChild().getNodeValue();
					String value2 = item.getElementsByTagName("bookprice").item(0).getFirstChild().getNodeValue();
					String value3 = item.getElementsByTagName("bookauther").item(0).getFirstChild().getNodeValue();
					String value4 = item.getElementsByTagName("bookversion").item(0).getFirstChild().getNodeValue();
					
					System.out.print(string+"\t"+value1+"\t"+value2+"\t"+value3+"\t"+value4);
					System.out.println();					
				}				
	}

}
6,在Xml中增加新的子节点:
package cn.day2;

import java.io.IOException;

import javax.naming.spi.DirStateFactory.Result;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
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.xml.sax.SAXException;

public class Myxml {

	public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, TransformerException {
		call();
		 //1,创建解析器工厂
		DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
		//2,创建解析器对象
		DocumentBuilder builder = factory.newDocumentBuilder();
		//3,指向硬件文档,形成Document对象
		Document parse = builder.parse("src/books.xml");
		//4,在内存中构件一个游离的book对象
		
		Element element = parse.createElement("book");
		element.setAttribute("id", "004");
		
		Element element2 = parse.createElement("bookname");
		element2.setTextContent("原子分离学");
		
		Element element3 = parse.createElement("bookprice");
		element3.setTextContent("96");
		
		Element element4 = parse.createElement("bookauther");
		element4.setTextContent("张明曾");
		
		Element element5 = parse.createElement("bookversion");
		element5.setTextContent("最终版本");
		
		//6,与book子节点绑定
		
		element.appendChild(element2);
		element.appendChild(element3);
		element.appendChild(element4);
		element.appendChild(element5);
		//7,book与books跟节点绑定,作为他的子节点
		//8,将游离的book对象隶属于books的子节点
		parse.getElementsByTagName("books").item(0).appendChild(element);
		//9,Document 对象parsen 写入硬盘上
		//10,Transfer 传输到硬盘上
		TransformerFactory factory2=TransformerFactory.newInstance();
		Transformer transformer = factory2.newTransformer();
		
		Source source=new DOMSource(parse);
		StreamResult result=new StreamResult("src/books.xml");
		
		transformer.transform(source, result);
		System.out.println("成功");
		
		
	}

	private static void call() throws ParserConfigurationException, SAXException, IOException {
		        //1,创建解析器工厂
				DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
				//2,创建解析器对象
				DocumentBuilder builder = factory.newDocumentBuilder();
				//3,指向硬件文档,形成Document对象
				Document parse = builder.parse("src/books.xml");
				//4,先指向NodeList集合对象,循环输出个个元素
				NodeList list = parse.getElementsByTagName("book");
				for (int i = 0; i <list.getLength(); i++) {
					Element item = (Element)list.item(i);
					String string = item.getAttribute("id");
					String value1 = item.getElementsByTagName("bookname").item(0).getFirstChild().getNodeValue();
					String value2 = item.getElementsByTagName("bookprice").item(0).getFirstChild().getNodeValue();
					String value3 = item.getElementsByTagName("bookauther").item(0).getFirstChild().getNodeValue();
					String value4 = item.getElementsByTagName("bookversion").item(0).getFirstChild().getNodeValue();
					
					System.out.print(string+"\t"+value1+"\t"+value2+"\t"+value3+"\t"+value4);
					System.out.println();
					
				}
				
	}

}

  

posted on 2017-05-18 19:16  蒙古码农  阅读(140)  评论(0编辑  收藏  举报