DOM解析示例
收藏信息.xml
<?xml version="1.0" encoding="GB2312" standalone="no"?><PhoneInfo>
<Brand id="0" name="华为">
<Type name="U8650"/>
<Type name="HW123"/>
<Type name="HW321"/>
</Brand>
<Brand id="1" name="苹果">
<Type name="iPhone4"/>
</Brand>
<Brand id="2" name="三星"><type name="s120"/></Brand></PhoneInfo>
解析示例:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
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;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException; public class ParseXml {
private Document document;
//获取DOM树
public void getDom(){
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
document = builder.parse("收藏信息.xml");
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} //遍历XML信息
public void showInfo(){
NodeList nodes = document.getElementsByTagName("Brand");
for(int i=0;i<nodes.getLength();i++){
Node node = nodes.item(i);
Element ele = (Element)node;
String brandName = ele.getAttribute("name");
System.out.println(brandName); NodeList types = ele.getChildNodes();
for(int j=0;j<types.getLength();j++){
Node typeNode = types.item(j);
//如果节点是元素节点时再类型转换
if(typeNode.getNodeType() == Node.ELEMENT_NODE){
Element typeEle = (Element)typeNode;
String typeName = typeEle.getAttribute("name");
System.out.println(typeName);
}
} } } //保存XML
public void saveXml(String path){
TransformerFactory factory = TransformerFactory.newInstance();
try {
//获取解析器
Transformer transformer = factory.newTransformer();
//指定特定的输出格式
transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
//源
DOMSource source = new DOMSource(document);
//目标
StreamResult result = new StreamResult(new FileOutputStream(path));
//解析
transformer.transform(source, result); } catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
} } //向XML添加节点
public void addEle(){
Element Brand = document.createElement("Brand");
Brand.setAttribute("name", "三星");
Element type = document.createElement("type");
type.setAttribute("name", "s120");
Brand.appendChild(type);
document.getElementsByTagName("PhoneInfo").item(0).appendChild(Brand);
saveXml("收藏信息.xml");
} //修改XML元素,为每个Brand节点添加一个ID属性,分别为0,1,2
public void updateEle(){
NodeList brand = document.getElementsByTagName("Brand");
for(int i=0;i<brand.getLength();i++){
Node node = brand.item(i);
Element ele = (Element)node;
ele.setAttribute("id", i+"");
}
saveXml("收藏信息.xml");
} //删除手机品牌为华为的相关元素
public void deleteEle(){
NodeList brand = document.getElementsByTagName("Brand");
for(int i=0;i<brand.getLength();i++){
Node node = brand.item(i);
Element brandEle = (Element)node;
if(brandEle.getAttribute("name").equals("华为")){
brandEle.getParentNode().removeChild(brandEle);
}
}
saveXml("收藏信息.xml");
} public static void main(String[] args) {
ParseXml px = new ParseXml();
px.getDom();
px.showInfo();
// px.saveXml("wjb.xml");
// px.addEle();
px.updateEle();
px.deleteEle();
} }
DOM解析示例的更多相关文章
- dom4j解析示例
收藏信息.xml <?xml version="1.0" encoding="GB2312" standalone="no"?> ...
- PHP Simple HTML DOM解析器
一直以来使用php解析html文档树都是一个难题.Simple HTML DOM parser 帮我们很好地解决了使用 php html 解析 问题.可以通过这个php类来解析html文档,对其中的h ...
- JavaEE XML DOM解析之DOM4J
DOM解析之DOM4J @author ixenos DOM4J常用API 读取xml文档: Document doc = new SAXReader().read("xml文件" ...
- JavaEE XML DOM解析
DOM解析XML @author ixenos XML解析方式(原理) a) DOM 解析树 b) SAX 流事件 DOM解析对应主流工具 i. DOM(官方) i ...
- Java XML DOM解析(xPath)
(一) XML概念 在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等.它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的 ...
- PHP Simple HTML DOM解析器使用入门
http://www.cnphp.info/php-simple-html-dom-parser-intro.html 一直以来使用php解析html文档树都是一个难题.Simple HTML DOM ...
- 用DOM解析XML ,用xpath快速查询XML节点
XPath是一种快速查询xml节点和属性的一种语言,Xpath和xml的关系就像是sql语句和数据库的关系.用sql语句可以从数据库中快速查询出东西同样的用xPath也可以快速的从xml中查询出东西. ...
- java拾遗1----XML解析(一) DOM解析
XML解析技术主要有三种: (1)DOM(Document Object Model)文档对象模型:是 W3C 组织推荐的解析XML 的一种方式,即官方的XML解析技术. (2)SAX(Simple ...
- XML解析(一) DOM解析
XML解析技术主要有三种: (1)DOM(Document Object Model)文档对象模型:是 W3C 组织推荐的解析XML 的一种方式,即官方的XML解析技术. (2)SAX(Simple ...
随机推荐
- Java性能调优之:idea变慢解决
今天搬砖的时候遇到一个问题,idea总是卡死,完全无法愉快的玩耍.幸好机器是Linux系统的.于是通过以下方式解决了问题: 通过top命令,查看系统运行状态发现4个CPU中有1个CPU用户占用率为10 ...
- mybatis配置自带缓存和第三方缓存
http://blog.csdn.net/grhlove123/article/details/47808025
- WPF获取应用程序启动目录的方法
1.AppDomain.CurrentDomain.BaseDirectory using System; namespace ConsoleApplication1 { class Program ...
- 使用bootstrap的日期插件
1. 需要用的js包点击下载,在项目中引入该js. <script language="JavaScript" src="${pageContext.reques ...
- 9个基于Java的搜索引擎框架
在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的整容医疗机构(尽管有很大一部分广 ...
- swing中JTable的使用方法
public static void main(String[] args) { Student s1 = new Student("张三", "001", 0 ...
- Python3实现火车票查询工具
Python 实现火车票查询工具 一. 实验介绍 通过python3实现一个简单的命令行版本的火车票查询工具,用实际中的例子会更感兴趣,不管怎么样,既练习了又可以自己使用. 1. 知识点: Pyth ...
- MFC 文件夹选择对话框
CString setSavePath() { CString strPath = _T(""); HRESULT hr; LPITEMIDLIST pItemList; BROW ...
- javase-->多线程--线程池
java的线程池理解 在面向对象编程中,对象创建和销毁是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源.在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收. ...
- 第六课 touch事件
1.移动端页面在PC上浏览时,限制宽度的方法: 2.移动端页面切换设备时自动刷新页面的方法: 3.touch事件 touchstart:当手指触摸屏幕时触发.通过addEventListener添加移 ...