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; ...
随机推荐
- Aggregated Counting(找规律 + 预处理)
Aggregated Counting 转 : https://blog.csdn.net/cq_phqg/article/details/48417111 题解: 可以令n=1+2+2+3+3+.. ...
- C#操作XML方法详解
using System.Xml; //初始化一个xml实例 XmlDocument xml=new XmlDocument(); //导入指定xml文件 xml.Load(path); xml. ...
- python_super注意事项
class room: def __init__(self,area=120,usedfor='sleep'): self.area = area self.usedfor = usedfor def ...
- Python 学习记录之----模块 paramiko
paramiko 一.安装 pip3.5 install paramiko pip3.5 install pycrypto # pycrypto,由于 paramiko 模块内部依赖pycrypto, ...
- ubuntu14.04 cpu-ssd
1. ssd-caffe部署 五年半前老笔记本,没有GPU(其实有,AMD的,不能装CUDA),之前装过CPU版的Caffe 新建一个目录,然后参考网上步骤 sudo git clone https: ...
- HttpServletRequestWrapper
1). why 需要改变从 Servlet 容器 (可能是任何的 Servlet 容器)中传入的 HttpServletRequest 对象的某个行为,该怎么办? 一. 继承 HttpServletR ...
- Unicode字符需要几个字节来存储?
0)学习笔记: 我们常说的这句话“Unicode字符是2个字节”这句话有毛病 Unicode目前规划的总空间有17个平面, 0x0000---0x10FFFF,每个平面有 65536 个码点. Uni ...
- 模拟windows全盘搜索
循环遍历pc上的文件夹,保存到mysql数据库中,搜索时,从数据库取数据.import osimport datetimeimport pymysqlimport threading def link ...
- python中的作用域以及内置函数globals()-全局变量、locals()-局部变量
在python中,函数会创建一个自己的作用域,也称为为命名空间.这意味着在函数内部访问某个变量时,函数会优先在自己的命名空间中寻找. 通过内置函数globals()返回的是python解释器能知道的变 ...
- 基于spring框架的jt项目分页查询知识点(一)
知识点汇总(一) 1. 点击事件函数 $(function(){ //事件注册,(表示在#pageId对应容器对象的相关子元素中注册click事件) $("#pageId").on ...