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数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据类型的作用 数据类型就是一组值,以及这一组值上的操作,数据类型可以决定数据的存储方式,取值范围 ...
随机推荐
- LeetCode 155 Min Stack(最小栈)
翻译 设计支持push.pop.top和在常量时间内检索最小元素的栈. push(x) -- 推送元素X进栈 pop() -- 移除栈顶元素 top() -- 得到栈顶元素 getMin() -- 检 ...
- Dbvisual连接远程数据库报错Error Code: 17401
Long Message:违反协议 Details: Type: java.sql.SQLException Error Code: 17401 SQL State: null 现象: 本 ...
- web项目的路径问题
一.使用base标签,使相对路径和绝对路径可以同时使用 但是,base标签对Ie低版本不兼容(IE8及IE8以下) 不过,鉴于IE在国内具有无与伦比的统治地位,所以,换了个写法: <script ...
- max_int和-1
#include <stdio.h> int main(int argc, char *argv[]) { unsigned ; ) printf("umax:%u == -1\ ...
- bazel-编译多目标
demo2 使用bazel编译多目标示例,一个bianry,一个library. demo2目录树 ── demo2 ├── app │ ├── BUILD │ ├── func.cpp ...
- python文件目录操作大全
python只获取当前目录下的文件夹及文件名 list = os.listdir(rootdir)#列出目录下的所有文件和目录 for line in list: filepath = os.path ...
- 终端运行apk
启动一个活动 am start -n com.example.apptest/com.example.apptest.MainActivity 替换apk . udisk1/runRCApk.sh s ...
- systemd启动多实例
最近用了centos7,启动管理器用的是systemd,感觉很好玩. 1.开机自动启动 新建一个service文件放到/usr/lib/systemd/system/ 比如: [Unit] Descr ...
- linux - fpga-framebuff驱动
* linux/drivers/video/fpga_fb.c --fpga graphics adaptor frame buffer device * Created 16 Sep2011 * ...
- 使用js事件机制进行通用操作&特定业务处理的协调
背景:提供一个通用的功能工具条,工具条会在特定的事件响应时进行一些通用处理:第三方系统使用iframe嵌入这个工具条中,在工具条的特定的事件响应时进行通用处理的时候,有可能第三方系统会有一些自己的业务 ...