我是蒙古人--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(); } } }