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数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据类型的作用 数据类型就是一组值,以及这一组值上的操作,数据类型可以决定数据的存储方式,取值范围 ...
随机推荐
- jQuery常用方法一览及JQuery选择器获取表格中按钮所在行的其他列值
Attribute: $(”p”).addClass(css中定义的样式类型); 给某个元素添加样式$(”img”).attr({src:”test.jpg”,alt:”test Image”}); ...
- 使用 SSHFS 挂载远程的 Linux 文件系统及目录
1. 安装 sudo apt-get install sshfs 2. 创建 SSHFS 挂载目录 sudo mkdir /mnt/cong 3.使用 SSHFS 挂载远程的文件系统 sudo ssh ...
- 阿里云maven 库
阿里云maven 库 , 好用,速度快 maven setting.xml https://github.com/ae6623/Zebra/blob/master/maven-repo-setting ...
- java中long型时间戳的计算
计算时间的时候碰到的问题: Date d = new Date(); long currtime = d.getTime(); //获取当前时间 long starttime = currtime - ...
- connect: Network is unreachable解決方法
connect: Network is unreachable解決方法 解決方式:請確認ifcfg-eth0檔案設定 指令如下: vi /etc/sysconfig/network-scrip ...
- Atitit.mysql oracle with as模式临时表模式 CTE 语句的使用,减少子查询的结构性 mssql sql server..
Atitit.mysql oracle with as模式临时表模式 CTE 语句的使用,减少子查询的结构性 mssql sql server.. 1. with ... as (...) 在mys ...
- 单页应用SPA做SEO的一种清奇的方案
单页应用SPA做SEO的一种清奇的方案 网上有好几种单页应用转seo的方案,有服务端渲染ssr.有预渲染prerender.google抓AJAX.静态化...这些方案都各有优劣,开发者可以根据不同的 ...
- JAVA List 分割
按指定大小,分隔集合,将集合按规定个数分为n个部分 import java.util.ArrayList; import java.util.Collections; import java.util ...
- CSS3背景总结
值 描述 CSS background-color 规定要使用的背景颜色. 1 background-position 规定背景图像的位置. 1 background-size 规定背景图片的尺寸. ...
- ERROR 1130 (HY000): Host '192.168.0.190' is not allowed to connect to this MySQL serv
环境: CentOS6.2.MySQL5.1 问题描述: 在配置文件中将需要连接的MySQL的host设置为192.168.0.190(其实就是我自己的IP地址),然后运行自己的程序,结果返回MySQ ...