java基础---->java自带的xml解析
在查看公司框架的源码的时候,发现框架用的是jdk自带的xml解析。今天,想着对它总结一下。从未放弃过爱你,只是从浓烈变得悄无声气。
利用jdk自带的xml创建文档
一、 CreateXmlFile类如下:
package com.huhx.saxxml; import java.io.FileOutputStream;
import java.io.PrintWriter; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
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; public class CreateXmlFile { public static void parseXml(String path) {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder dombuilder = builderFactory.newDocumentBuilder();
Document document = dombuilder.newDocument();
Element root = document.createElement("persons");
document.appendChild(root); // 第一个人
Element person1 = document.createElement("person");
person1.setAttribute("name", "Linux");
root.appendChild(person1); Element sex = document.createElement("sex");
sex.appendChild(document.createTextNode("女"));
person1.appendChild(sex); Element address = document.createElement("address");
address.appendChild(document.createTextNode("湖北"));
person1.appendChild(address); Element phoneNumber = document.createElement("phone");
phoneNumber.appendChild(document.createTextNode("155124578**"));
person1.appendChild(phoneNumber); // 第二个人
Element person2 = document.createElement("person");
person2.setAttribute("name", "Huhx");
root.appendChild(person2); Element sex2 = document.createElement("sex");
sex2.appendChild(document.createTextNode("男"));
person2.appendChild(sex2); Element address2 = document.createElement("address");
address2.appendChild(document.createTextNode("湖南"));
person2.appendChild(address2); Element phoneNumber2 = document.createElement("phone");
phoneNumber2.appendChild(document.createTextNode("155124578**"));
person2.appendChild(phoneNumber2); // 将上述的document写入到文件中
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter pw = new PrintWriter(new FileOutputStream(path));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
parseXml("text.xml");
}
}
二、 生成的text.xml文件如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persons>
<person name="Linux">
<sex>女</sex>
<address>湖北</address>
<phone>155124578**</phone>
</person>
<person name="Huhx">
<sex>男</sex>
<address>湖南</address>
<phone>155124578**</phone>
</person>
</persons>
利用jdk自带的xml解析文档
一、 ReadXmlFile.java类的内容如下:
package com.huhx.saxxml; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList; public class ReadXmlFile {
public static void readXml(String path) {
try {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder(); Document document = builder.parse(path);
Element rootElement = document.getDocumentElement();
System.out.println("根元素:" + rootElement.getNodeName()); NodeList childNodes = rootElement.getElementsByTagName("person");
for (int i = 0; i < childNodes.getLength(); i++) {
Element element = (Element) childNodes.item(i);
String name = element.getAttribute("name");
String content = element.getElementsByTagName("sex").item(0).getFirstChild().getNodeValue();
String address = element.getElementsByTagName("address").item(0).getFirstChild().getNodeValue();
String phone = element.getElementsByTagName("phone").item(0).getFirstChild().getNodeValue();
System.out.println("name: " + name + ", content: " + content + ", address: " + address + ", phone: " + phone);
}
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
readXml("text.xml");
}
}
二、控制台打印结果如下:
根元素:persons
name: Linux, content: 女, address: 湖北, phone: 155124578**
name: Huhx, content: 男, address: 湖南, phone: 155124578**
友情链接
java基础---->java自带的xml解析的更多相关文章
- 使用java自带的xml解析器解析xml
使用java自带的xml解析器解析xml,其实我不推荐,可以用Dom解析,或其他的方式,因为Java自带的解析器使用不但麻烦,且还有bug出现. 它要求,针对不同的xml(结构不同),必须写对应的ha ...
- java基础---->java中正则表达式二
跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...
- Java基础-Java中的堆内存和离堆内存机制
Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Java基础-Java中的内存分配与回收机制
Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二.
- Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock)
Java基础-Java中的并法库之重入读写锁(ReentrantReadWriteLock) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在学习Java的之前,你可能已经听说过读 ...
- Java基础-Java中的并法库之线程池技术
Java基础-Java中的并法库之线程池技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是线程池技术 二.
- Java基础-Java中23种设计模式之常用的设计模式
Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...
- Java基础-JAVA中常见的数据结构介绍
Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...
- Java基础-Java数据类型
Java基础-Java数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据类型的作用 数据类型就是一组值,以及这一组值上的操作,数据类型可以决定数据的存储方式,取值范围 ...
随机推荐
- Mosquitto----服务器日志
客户端连接日志 1403334375: New connection from 121.201.8.163 on port 1883. 1403334375: New client connected ...
- 使用阿里云Docker镜像加速
使用docker官方的docker hub速度太慢,正好看到国内阿里云也做了docker镜像,于是想试试看阿里云的docker源.先附上 阿里云docker hub地址 .新用户需要注册成为开发者.打 ...
- jQuery事件:bind、delegate、on的区别
最近在AngularJS的开发中,遇到一个神奇的事情:我们用到livebox来预览评论列表中的图片, 然而评论列表是由Angular Resource动态载入的.不可思议的是,点击这些动态载入的图片仍 ...
- github提交一个空目录
github默认不上传空目录,有的时候需要空目录来保持程序的结构. 二个小问题. 1.始终保持空目录,即时里面有文件,也全部忽略掉. 建立一个.gitignore文件放到空目录内. mkdir emp ...
- Makefile 使用小结
Makefile的基本格式 #目标:依赖(条件) # 命令 #all: add.c sub.c dive.c mul.c main.c # gcc add.c sub.c div.c mul.c ma ...
- LoadRunner “add measurements”(添加度量)菜单问题
HP LoadRunner 11版本 配置
- httpclient 释放连接的问题 Invalid use of SingleClientConnManager: connection still allocated
Invalid use of SingleClientConnManager: connection still allocated httpPost.releaseConnection(); 该代 ...
- oracle中select clob的返回类型
当select的字段是clob类型的数据时,但是数据长度在2000字节到4000字节时,默认转为long类型. 所以当用insert into select的时候,预期插入的是clob类型,但是报or ...
- AM335x 添加 HUAWEI MU609 Mini PCIe Module,并用pppd 启动相关设备
kernel 的配置 kernel 3.2.0 make menuconfig Device Drivers ---> [*] USB support ---> <*> USB ...
- Python高级编程之生成器(Generator)与coroutine(三):coroutine与pipeline(管道)和Dataflow(数据流_
原创作品,转载请注明出处:点我 在前两篇文章中,我们介绍了什么是Generator和coroutine,在这一篇文章中,我们会介绍coroutine在模拟pipeline(管道 )和控制Dataflo ...