jaxp解析xml
来源:互联网 发布:怎样举报网络非法赌博 编辑:程序博客网 时间:2024/06/05 09:52
JAXP解析XML概要
*jaxp是JavaSE的一部分
*jaxp解析器在javax.xml.parsers包里
dom:
DocumentBuilder:解析器类
DocumentBuilderBuilder:解析器工厂
sax:
SAXParser:解析器
SAXParserFactory:解析器工厂
-------------------------------------------------------
DOM:
DocumentBuilder
*抽象类
*用DocumentBuilderFactory.newDocumentBuilder()
获取实例
方法——
parse("xml路径"):解析xml文档,返回Document对象
****Document是一个接口,其父对象是Node
与js中相似的方法:
getElementsByTagName(String tagname)
——得到标签,返回集合
createElement(String tagname)
——创建标签
createTextNode(String data)
——创建文本
appendChild(Node newChild)
——把文本添加到标签下
removeChild()
——删除节点
getParentNode
——获取到父节点
...............
DocumentBuilderFactory
*抽象类
1.创建解析器工厂
2.根据解析器工厂创建解析器
3.解析xml,返回document
4.得到所有的name元素
5.遍历集合
三、修改节点内容
四、删除操作
SAX:不能实现增删改操作
解析方式:事件驱动,边读边解析
SAXParser:
*抽象类
*用SAXParseFactory.newSAXParser获取实例
——————方法:parser(File f,DefaultHandle dh)
File:xml路径
DefaultHandle:事件处理器
————startElement(Stirng url,String localName,
String qName,Attributes attributes)
————characters(char[] ch,int start,int length)
————endElement(Stirng url,String localName,
String qName)
SAXParseFactory:
*有newInstance()方法获取实例
*jaxp是JavaSE的一部分
*jaxp解析器在javax.xml.parsers包里
dom:
DocumentBuilder:解析器类
DocumentBuilderBuilder:解析器工厂
sax:
SAXParser:解析器
SAXParserFactory:解析器工厂
-------------------------------------------------------
DOM:
DocumentBuilder
*抽象类
*用DocumentBuilderFactory.newDocumentBuilder()
获取实例
方法——
parse("xml路径"):解析xml文档,返回Document对象
****Document是一个接口,其父对象是Node
与js中相似的方法:
getElementsByTagName(String tagname)
——得到标签,返回集合
createElement(String tagname)
——创建标签
createTextNode(String data)
——创建文本
appendChild(Node newChild)
——把文本添加到标签下
removeChild()
——删除节点
getParentNode
——获取到父节点
...............
DocumentBuilderFactory
*抽象类
*用newInstance()获取实例
对xml文档进行操作:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><preson><p1><name>xiaobai</name><age>20</age></p1><p1><name>xiaohua</name><age>20</age><sex>male</sex></p1></preson>一、查询操作
1.创建解析器工厂
2.根据解析器工厂创建解析器
3.解析xml,返回document
4.得到所有的name元素
5.遍历集合
public static void selectAll() throws ParserConfigurationException,SAXException, IOException {DocumentBuilderFactory builderFActory = DocumentBuilderFactory.newInstance();DocumentBuilder builder=builderFActory.newDocumentBuilder();Document document=builder.parse("src/1.xml");//得到name元素NodeList list = document.getElementsByTagName("name");//遍历集合for(int i=0;i<list.getLength();i++){Node name1=list.item(i);//得到name中的值String s=name1.getTextContent();System.out.println(s);}}
二、添加元素
1.创建解析器工厂
2.根据解析器工厂创建解析器
3.解析xml,返回document
4.得到要添加元素的父元素
5.创建标签
6.创建文本
7.将其文本添加到该标签下
8.将标签添加到其父标签下
9.回写xml
public static void addSex() throws Exception{DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();DocumentBuilder builder=builderFactory.newDocumentBuilder();Document document=builder.parse("src/1.xml");NodeList list=document.getElementsByTagName("p1");Node p1=list.item(0);Element sex1=document.createElement("sex");Text sexStr=document.createTextNode("male");sex1.appendChild(sexStr);p1.appendChild(sex1);//回写TransformerFactory transformerFactory=TransformerFactory.newInstance();Transformer transformer=transformerFactory.newTransformer();transformer.transform(new DOMSource(document),new StreamResult("src/1.xml"));}
三、修改节点内容
public static void modifySex() throws Exception{DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();DocumentBuilder builder=builderFactory.newDocumentBuilder();Document document = builder.parse("src/1.xml");NodeList list = document.getElementsByTagName("sex");Node sex1=list.item(0);sex1.setTextContent("famale");//回写TransformerFactory transformerFactory=TransformerFactory.newInstance();Transformer transformer=transformerFactory.newTransformer();transformer.transform(new DOMSource(document),new StreamResult("src/1.xml"));}
四、删除操作
1.创建解析器工厂
2.根据解析器工厂创建解析器
3.解析xml,返回document
4.得到要删除元素的父元素
5.得到该元素
6.将其从父元素下删除
7.回写xml
public static void delPerson() throws Exception{DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = builderFactory.newDocumentBuilder();Document document = builder.parse("src/1.xml");Node p1 = document.getElementsByTagName("p1").item(0);Node temp = document.getElementsByTagName("sex").item(0);p1.removeChild(temp);//回写TransformerFactory transformerFactory=TransformerFactory.newInstance();Transformer transformer=transformerFactory.newTransformer();transformer.transform(new DOMSource(document),new StreamResult("src/1.xml"));}
五、利用递归实现遍历
public static void allElement() throws Exception{DocumentBuilderFactory builderFActory = DocumentBuilderFactory.newInstance();DocumentBuilder builder=builderFActory.newDocumentBuilder();Document document=builder.parse("src/1.xml");//遍历all(document);}private static void all(Node node) {// TODO Auto-generated method stubif(node.getNodeType()==Node.ELEMENT_NODE){String str=node.getNodeName();System.out.println(str);}NodeList list = node.getChildNodes();for(int i=0; i<list.getLength(); i++){Node temp=list.item(i);all(temp);}}-----------------------------------------------------------------------------------------
SAX:不能实现增删改操作
解析方式:事件驱动,边读边解析
SAXParser:
*抽象类
*用SAXParseFactory.newSAXParser获取实例
——————方法:parser(File f,DefaultHandle dh)
File:xml路径
DefaultHandle:事件处理器
————startElement(Stirng url,String localName,
String qName,Attributes attributes)
————characters(char[] ch,int start,int length)
————endElement(Stirng url,String localName,
String qName)
SAXParseFactory:
*有newInstance()方法获取实例
import java.io.IOException;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class TextSax {/** * @param args * @throws SAXException * @throws ParserConfigurationException * @throws IOException */public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {// TODO Auto-generated method stub/* * 1.创建解析器工厂 * 2.创建解析器 * 3.执行parse方法 * 4.创建类继承DefaultHandler * 5.重写3个方法 * *///创建解析工厂SAXParserFactory saxParserFactory=SAXParserFactory.newInstance();SAXParser saxParser=saxParserFactory.newSAXParser();saxParser.parse("src/1.xml", new MyDefault());}}class MyDefault extends DefaultHandler{@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {// TODO Auto-generated method stubsuper.startElement(uri, localName, qName, attributes);System.out.print("<"+qName+"/>");}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {// TODO Auto-generated method stubsuper.endElement(uri, localName, qName);System.out.print("<"+qName+"/>");}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {// TODO Auto-generated method stubsuper.characters(ch, start, length);System.out.print(new String(ch,start,length));}}
0 0
- 使用JAXP解析XML
- jaxp对xml解析
- Java JAXP 解析XML
- JAXP解析XML文档
- JAXP解析XML
- jaxp解析xml
- XML之JAXP解析
- jaxp解析xml
- XML解析之JAXP
- jaxp解析xml
- Java解析xml(jaxp)
- 【XML】JAXP-SAX解析xml
- 用JAXP解析XML文档
- 用JAXP解析XML文档
- javawebXML及Jaxp解析XML
- xml的jaxp解析实例
- 解析xml文件(jaxp)
- 使用JAXP Dom解析xml
- C++ Primer Week2
- AsyncTaskLoader2 设计原理大揭底
- 用Python实现一个1加到n求和功能的函数
- Vmware Tools安装出错的解决方法
- [64]Minimum Path Sum
- jaxp解析xml
- oc字符串 和 注意地方
- setLatestEventInfo(),Builder.getNotification()过时,Android提供的解决方案
- 面对电信运营商HTTP劫持如何是好,投诉太折腾,不如路由器直接屏蔽广告源
- 《C++ primer》英文第五版阅读笔记(六)——类型处理
- C++的精髓——虚函数
- php面向对象(一)
- 在github上创建新分支
- 设计模式之单例模式