在java   jdk中解析XMl文件使用 org.w3c.dom.Document工具

一下是写入全程:

import java.io.File;
import java.io.IOException;
import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
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.xml.sax.SAXException; public class CreatXML { /**
* 创建一个XML文件
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub try { DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//可获取XML解析器
DocumentBuilder builder = factory.newDocumentBuilder();//获取文档生成器
Document document=builder.newDocument();//获取文档实例
Element root=document.createElement("languages");//创建一个根元素
root.setAttribute("cat", "it");//给根元素添加一个cat="it" 的属性 Element lan1=document.createElement("lan");//创建一个元素标签名为<lan>
lan1.setAttribute("id", "1");//添加属性
Element name1=document.createElement("name");//创建一个name标签
name1.setTextContent("java");//为name标签设置内容
Element ide1=document.createElement("ide");//创建一个ide标签
ide1.setTextContent("Eclipse");//为表填添加内容 lan1.appendChild(name1);
lan1.appendChild(ide1);//让name1和 ide1标签成为lan1标签的子节点
root.appendChild(lan1);//将lan1添加到root 的子节点 document.appendChild(root);//将root添加到文档 //将document转化成流数据 以便储存在文件 或者传输 TransformerFactory transformerFactory= TransformerFactory.newInstance();
Transformer transformer=transformerFactory.newTransformer();
StringWriter writer=new StringWriter();
transformer.transform(new DOMSource(document), new StreamResult(writer));//将document转换成输出流
System.out.println(writer.toString()); transformer.transform(new DOMSource(document), new StreamResult(new File("newXML.xml")));//将document保存到文件 } catch (Exception e) {
e.printStackTrace();
} } }

  

以下是解析全程:

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* 解析xml文件
*
*
*/ public class ShowXML { public static void main(String[] args) throws Exception { DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//可获取XML解析器
DocumentBuilder builder=factory.newDocumentBuilder();//获取文档生成器
Document document=builder.parse(new File("workspace.xml"));//获取文档
Element root=document.getDocumentElement();//获取文档元素(这里是主元素)
System.out.println("version="+root.getAttribute("version"));//输出查看元素属性
NodeList list=root.getElementsByTagName("component");//获取所有component标签节点
for (int i = 0; i < list.getLength(); i++) {//遍历节点
Element component=(Element) list.item(i);//获取节点
System.out.println("----------------------------------");
System.out.println("component"+i+".name="+component.getAttribute("name"));//输出节点元素属性
//System.out.println(component.getTextContent());//获取节点内的文本
NodeList list1=component.getChildNodes();//获取component元素的所有子元素
for (int j = 0; j < list1.getLength(); j++) {//遍历子元素
System.out.println("-----------------------------------------");
Node componentchild=list1.item(j);//获取子元素节点 System.out.println(componentchild.getNodeName());//输出子元素标签名
//System.out.println(componentchild.getTextContent());//输出子元素的文本内容
//输出中有些无用的节点#text 代表换行空白的节点
//去除#text的方法 判断这个节点是不是一个元素再输出
/*if(componentchild instanceof Element){
System.out.println(componentchild.getNodeName());//输出子元素标签名 }*/ } } }
}

  

还有一种引用Dom4j.jar 工具包

写入Xml

package Dom4j_XMl;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream; import org.dom4j.Document;
import org.dom4j.DocumentHelper; public class Dom4j { /**
* Dom4j使用 快捷的进行XML读写
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String xmlval="<peopre><name>老表</name><age>26</age></peopre>";
Document document=DocumentHelper.parseText(xmlval); System.out.println(document.asXML());//直接可以输出XML格式的数据 File file=new File("mynews.xml");
if(!file.isAbsolute()){ file.createNewFile();
}
byte[] xmlbyte=xmlval.getBytes("utf-8"); FileOutputStream out=new FileOutputStream(file);
BufferedOutputStream bout=new BufferedOutputStream(out);
bout.write(xmlbyte);
bout.flush();
out.close();
bout.close(); } }

  

XML文件解析!!!的更多相关文章

  1. 通过正则表达式实现简单xml文件解析

    这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...

  2. 八、Android学习第七天——XML文件解析方法(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...

  3. android基础知识13:AndroidManifest.xml文件解析

    注:本文转载于:http://blog.csdn.net/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...

  4. Android之AndroidManifest.xml文件解析

    转自:Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文 ...

  5. 9.XML文件解析

    一.XML简介 XML(EXtensible Markup Language),可扩展标记语言 特点:XML与操作系统.编程语言的开发平台无关 实现不同系统之间的数据交换 作用:数据交互 配置应用程序 ...

  6. Python实现XML文件解析

    1. XML简介 XML(eXtensible Markup Language)指可扩展标记语言,被设计用来传输和存储数据,已经日趋成为当前许多新生技术的核心,在不同的领域都有着不同的应用.它是web ...

  7. Python3将xml文件解析为Python对象

    一.说明 从最开始写javascript开始,我就很烦感使用getElementById()等函数来获取节点的方法,获取了一个节点要访问其子孙节点要么child半天要么就再来一个getElementB ...

  8. XML文件解析-DOM4J方式和SAX方式

    最近遇到的工作内容都是和xml内容解析相关的. 1图片数据以base64编码的方式保存在xml的一个标签中,xml文件通过接口的方式发送给我,然后我去解析出图片数据,对图片进行进一步处理. 2.xml ...

  9. java基础之概谈xml文件解析

    XML已经成为一种非常通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便. 诸多web应用框架,其可配置的编程方式,给我们的开发带来了非常大程度的便捷,但细细 ...

  10. XML文件解析之JDOM解析

    1.JDOM介绍 JDOM的官方网站是http://www.jdom.org/,JDOM解析用到的jar包可以在http://www.jdom.org/dist/binary/中下载,最新的JDOM2 ...

随机推荐

  1. C++质因数分解

    // CPP.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include<cs ...

  2. CentOS 7.4 下安装部署Nagios监控系统详细攻略(三)

    Nagios是一个流行的电脑系统和网络监控程序,它检测主机和服务,当异常发生和解除时能提醒用户.它是基于GPLv2开发的开源软件,可免费获得及使用. nagios工作原理 nagios的功能是监控服务 ...

  3. 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)

    链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/ ...

  4. PIL 中的 Image 模块

    转载:http://www.cnblogs.com/way_testlife/archive/2011/04/20/2022997.html   PIL 中的 Image 模块 本文是节选自 PIL ...

  5. MyEclipse内存不足?这里有你想要的问题解决方案

    [MyEclipse CI 2019.4.0安装包下载] No.1 打开MyEclipse目录下的myeclipse.ini文件 在后面修改下面几个属性: vmargs Xms512m ( Java能 ...

  6. 扑克牌中的顺子(网易2014.3.16笔试offerP226)

    题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2~10为数字本身,A为1,J~K为11,12,13,而大小王可以看成任意数字.(网易要求必须用C完成,可以用C库函数) ja ...

  7. 【NOIP2016提高A组五校联考4】ksum

    题目 分析 发现,当子段[l,r]被取了出来,那么[l-1,r].[l,r+1]一定也被取了出来. 那么,首先将[1,n]放入大顶堆,每次将堆顶的子段[l,r]取出来,因为它是堆顶,所以一定是最大的子 ...

  8. pandas Series和dataframe

    DataFrame是一个表格型数据结构,与Series不同的是,DataFrame可以含有一组或者有序的列,每列可以使不同的值的类型,它可以被看做成Series的字典.

  9. 状态管理-vuex

    1.使用vuex // 使用vuex // 第一步:装包npm i vuex -S // 第二步: import Vuex from 'vuex' Vue.use(Vuex) // 第三步: cons ...

  10. 浙大PAT CCCC L3-001 凑零钱 ( 0/1背包 && 路径记录 )

    题目链接 分析 : 就是一个 0/1 背包,但是需要记录具体状态的转移情况 这个可以想象成一个状态转移图,然后实际就是记录路径 将状态看成点然后转移看成边,最后输出字典序最小的路径 这里有一个很巧妙的 ...