java 之 xml 之解析工具jaxp
一、jaxp的api查看
*jaxp是javase一部分
*jaxp解析器在jdk的javax.xml.parsers包里面
*共四个类:分别针对dom和sax解析使用的类
*dom解析类:
DocumentBuilder:解析器类
*这个一个抽象类,不能new
*得到方式:DocumentBuilderFactory.newDocumentBuild();
*包含的方法:
可以解析xml:parser(String uri) uri:文件路径 返回Document对象
*返回的Document是一个接口,父节点是Node,若在Document找不到的方法,可以在Node找
*Document的方法:
*getElementsByTagName(String tagname):可以得到标签,返回集合NodeList
*createElement(String tagName): 创建标签
*createTextNode(String data):创建文本
*Node的方法
*appendChild(Node newChild):把文本添加到标签下面
*removeChild(Node oldChild):删除节点
*getParentNode():获取父节点
*NodeList的方法
*getLength():得到集合的长度
*item(int index)下标获取到具体的值
*案例:
for(int i=0;i<list.getLength;i++){list.item(i);
DocumentBuilderFactory:解析器工厂
*sax解析器:
SAXParser:解析器类
SAXParserFactory:解析器工厂
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList; public class TestJaxp {
public static void main(String[] args) throws Exception
{
//查询所有name元素的值
/**
* 1、创建解析器工厂
* 2、根据解析器工厂创建工厂
* 3、解析xml返回document
**/
//创建解析工厂
DocumentBuilderFactory buildFactory=DocumentBuilderFactory.newInstance();
//创建解析器
DocumentBuilder builder=buildFactory.newDocumentBuilder();
//解析xml返回document
Document document=builder.parse("src/person.xml");
//得到所有元素节点
NodeList nodeList=document.getElementsByTagName("name");
//遍历读取元素内容
for (int i = ; i < nodeList.getLength(); i++) {
Node name1=nodeList.item(i);
String s=name1.getTextContent();//得到标签元素里面的内容
System.out.println(s);
} }
} //添加
//1、创建解析器工厂
//根据解析器工厂创建工厂
//解析xml返回对象
DocumentBuilderFactory buildFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=buildFactory.newDocumentBuilder();
Document document=builder.parse("src/test.xml");
NodeList nodeList=document.getElementsByTagName("p1");
Node p1=nodeList.item();
Element sex1=document.createElement("sex");
Text text1=document.createTextNode("女");
sex1.appendChild(text1);
p1.appendChild(sex1); TransformerFactory transformerFactory=TransformerFactory.newInstance();
Transformer transformer=transformerFactory.newTransformer();
transformer.transform(new DOMSource(document),new StreamResult("src/test.xml")); //修改
//1、创建解析器工厂
//根据解析器工厂创建工厂
//解析xml返回对象
DocumentBuilderFactory buildFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=buildFactory.newDocumentBuilder();
Document document=builder.parse("src/test.xml");
Node node=document.getElementsByTagName("sex").item();
node.setTextContent("男"); TransformerFactory transformerFactory=TransformerFactory.newInstance();
Transformer transformer=transformerFactory.newTransformer();
transformer.transform(new DOMSource(document),new StreamResult("src/test.xml")); //删除
//1、创建解析器工厂
//根据解析器工厂创建工厂
//解析xml返回对象
DocumentBuilderFactory buildFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=buildFactory.newDocumentBuilder();
Document document=builder.parse("src/test.xml");
Node node=document.getElementsByTagName("name").item();
Node nodeParent=node.getParentNode();
nodeParent.removeChild(node);
TransformerFactory transformerFactory=TransformerFactory.newInstance();
Transformer transformer=transformerFactory.newTransformer();
transformer.transform(new DOMSource(document),new StreamResult("src/test.xml")); //递归遍历
//1、创建解析器工厂
//根据解析器工厂创建工厂
//解析xml返回对象
DocumentBuilderFactory buildFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=buildFactory.newDocumentBuilder();
Document document=builder.parse("src/test.xml");
list1(document);
} private static void list1(Node node) {
// TODO Auto-generated method stub
if(node.getNodeType()==Node.ELEMENT_NODE)
{
System.out.println(node.getNodeName());
} NodeList nodelist=node.getChildNodes();
for (int i = ; i < nodelist.getLength(); i++) {
Node node1=nodelist.item(i);
list1(node1);
}
}
java 之 xml 之解析工具jaxp的更多相关文章
- Java XML Dom解析工具
Java XML Dom解析工具 缩进等 transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); ...
- java后台常用json解析工具问题小结
若排版紊乱可查看我的个人博客原文地址 java后台常用json解析工具问题小结 这里不细究造成这些问题的底层原因,只是单纯的描述我碰到的问题及对应的解决方法 jackson将java对象转json字符 ...
- JAVA基础-XML的解析
一.XML的概述 XML的全名为可扩展标记语言(Extensible Markup Language),XML的作用为:1.传输,2.存取数据,3.软件的配置文件.传输现在都用更轻量的Json,而存储 ...
- JAVA 中XML的解析
XML: 可扩展标记语言(extensible Markup Language) 用于标记电子文件使其具有结构性的标记语言.XML可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定 ...
- Java对XML文件解析方式之一_SAX
SAX(org.xml.sax) Simple API for XML,以事件的形式通知程序,对Xml进行解析. SAX技术的介绍:SAX是一种以事件驱动的XML api,由它定义的事件流可以指定 ...
- Java操作XML的JAXB工具
在java中操作XML的工作中中,比较方便的工具是JAXB(Java Architecture for XML Binding). 利用这个工具很方便生成XML的tag和Java类的对应关系.参照网上 ...
- 基于Java的简易表达式解析工具(一)
最近需要用到相关表达式解析的工具,然后去网上搜索,找到了一个用C#写的表达式解析工具,仔细看了功能后发现,这正是我需要的,如果我能将它改造成基于Java语言的方式,岂不是更好吗,所以花了一段时间,把网 ...
- 基于Java的简易表达式解析工具(二)
之前简单的介绍了这个基于Java表达式解析工具,现在把代码分享给大家,希望帮助到有需要的人们,这个分享代码中依赖了一些其他的类,这些类大家可以根据自己的情况进行导入,无非就是写字符串处理工具类,日期处 ...
- java dom4j xml生成,解析
1. 用Java代码生成xml文档 package com.test.dom; import java.io.FileOutputStream; import java.io.IOException; ...
随机推荐
- 20170918-00-(代理ip检验)
代码集编号 20170918-00 import random #随机数模块 import urllib.request #常用爬虫模块 import time from bs4 import Bea ...
- python os.path.dirname()
----返回文件所在的路径 ----如果path变量直接是文件名则返回空
- python3安装scrapy教程
2.1xm1http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml3. PyOpensslhttps://pypi.python.org/pypi/pyOpen ...
- 区块链3.0 ada Cardano卡尔达诺如何获得一致好评?
区块链3.0 ada Cardano卡尔达诺如何获得一致好评? EOS 的直接竞争对手是以太坊.文章介绍的卡尔达诺(Cardano)的目标就更加远大了,他要同时锁定比特币和以太坊.但大家去网上搜索卡尔 ...
- cookie 和 session 的一些事 中间件
cookie 和 session cookie 1. 保存在浏览器上一组组键值对,服务器让浏览器进行设置. 2. 为什么要用cookie? HTTP协议是无状态.使用cookie保存状态. 3. dj ...
- Step by Step use OBD2 Scanner Guide
Learning to use a good automotive OBD2 code reader is one of the best ways you can continually inves ...
- vue 生命周期钩子的理解 watch computed
一 理解vue的生命周期,首先需要注意几个关键字 1. el :选择器 2. $el:对应选择器的template模板(html代码) 3. render:也是vue实例中的一项,其参数更接近vue ...
- CentOS7下部署Django项目详细操作步骤
严格按下面步骤 一.更新系统软件包 yum update -y 二.安装软件管理包和可能使用的依赖 yum -y groupinstall "Development tools" ...
- php+js的 authcode 混淆加密和解密,php和js可以通用加密和解密
<script> //md5.js var hexcase = 0; function hex_md5(a) { return rstr2hex(rstr_md5(str2rstr_utf ...
- Linux一些基本配置
Linux发行版:centos 6.5 配置yum源 wget http://mirrors.163.com/.help/CentOS6-Base-163.repo -P /etc/yum.repos ...